PHP forward_static_call() Function
The PHP forward_static_call() function is used to call a user defined static function or method, with the specified arguments. This function must be called within a method context, it can't be used outside a class. It uses the late static binding.
Syntax
forward_static_call(callback, args)
Parameters
callback |
Required. Specify the function or method to be called. It can be an array, with the name of the class, and the method, or a string, with a function name. |
args |
Required. Specify zero or more parameters to be passed to the function. |
Return Value
Returns the function result, or false on error.
Example: forward_static_call() example
The example below shows the usage of forward_static_call() function.
<?php //defining a class with static method class A { const NAME = 'A'; public static function test() { $args = func_get_args(); echo static::NAME." ".join(',', $args)." \n"; } } //defining a static function function test() { $args = func_get_args(); echo "B ".join(',', $args)." \n"; } //defining a class which uses above defined //static method and function using //forward_static_call() function class C extends A { const NAME = 'C'; public static function test() { echo self::NAME."\n"; forward_static_call(array('A', 'test'), 'more', 'args'); forward_static_call('test', 'other', 'args'); } } //calling (test) method of class C which //calls static method (test) of class A //and static function (test) inside C::test('foo'); ?>
The output of the above code will be:
C C more,args B other,args
Example: forward_static_call() example
Consider one more example explaining the usage of forward_static_call() function.
<?php //defining a class with static method class A { const NAME = 'A'; public static function test1($arg1, $arg2) { echo static::NAME." got $arg1 $arg2 \n"; } } //defining a static function function test2($arg1, $arg2) { echo "B got $arg1 $arg2 \n"; } //defining a class which uses above defined //static method and function using //forward_static_call() function class C extends A { const NAME = 'C'; public static function test() { echo self::NAME."\n"; forward_static_call(array('A', 'test1'), 'more', 'args'); forward_static_call('test2', 'other', 'args'); } } //calling (test) method of class C which //calls static method (test1) of class A //and static function (test2) inside C::test(); ?>
The output of the above code will be:
C C got more args B got other args
❮ PHP Function Handling Reference