forward_static_call_array

Call a callback with an array of parameters, preserving the current called class

Description

mixed forward_static_call_array(callable $callback, array $args)

Calls a user defined function or method given by the callback parameter, with arguments passed as an array, similarly to call_user_func_array. When called from within a method context and calling a method callback, it makes a forwarding call, so static:: inside the method resolves to the same called class as in the caller. This is useful for static method callbacks that should behave like self:: or parent::.

Note: Unlike forward_static_call, this function does not require an active class scope: calling forward_static_call outside a class throws an Error, while this function does not.

Parameters

callback

The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.

args
The parameters to be passed to the callback, as an array.

Note: To pass a parameter by reference, the corresponding element in args must be a reference.

Return Values

Returns the function result, or false on error.

Examples

Example #1 forward_static_call_array example

<?php

class A
{
    const NAME = 'A';
    public static function test() {
        $args = func_get_args();
        echo static::NAME, " ".join(',', $args)." \n";
    }
}

class B extends A
{
    const NAME = 'B';

    public static function test() {
        echo self::NAME, "\n";
        forward_static_call_array(array('A', 'test'), array('more', 'args'));
        forward_static_call_array( 'test', array('other', 'args'));
    }
}

B::test('foo');

function test() {
        $args = func_get_args();
        echo "C ".join(',', $args)." \n";
    }

?>

The above example will output:

B
B more,args 
C other,args

See Also

  • forward_static_call
  • call_user_func
  • call_user_func_array
  • is_callable