Movatterモバイル変換


[0]ホーム

URL:


PHP 8.5.0 Alpha 2 available for testing
    func_get_arg »
    « forward_static_call

    forward_static_call_array

    (PHP 5 >= 5.3.0, PHP 7, PHP 8)

    forward_static_call_arrayCall a static method and pass the arguments as array

    Description

    forward_static_call_array(callable$callback,array$args):mixed

    Calls a user defined function or method given by thecallback parameter. This function must be called within a method context, it can't be used outside a class. It uses thelate static binding. All arguments of the forwarded method are passed as values, and as an array, similarly tocall_user_func_array().

    Parameters

    callback

    The function or method to be called. This parameter may be anarray, with the name of the class, and the method, or astring, with a function name.

    parameter

    One parameter, gathering all the method parameter in one array.

    Note:

    Note that the parameters forforward_static_call_array() are not passed by reference.

    Return Values

    Returns the function result, orfalse on error.

    Examples

    Example #1forward_static_call_array() example

    <?php

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

    class
    BextendsA
    {
    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:

    BB more,args C other,args

    See Also

    Found A Problem?

    Learn How To Improve This PageSubmit a Pull RequestReport a Bug
    add a note

    User Contributed Notes2 notes

    nino dot skopac at gmail dot com
    8 years ago
    Regarding namespaces:

    Be sure to include fully namespaced class path:

    <?php
    forward_static_call_array
    (
    array(
    'NAMESPACE\CLASS_NAME','STATIC_METHOD'),
    $params
    );
    israfilov93 at gmal dot com
    6 years ago
    one of academic example, when forward_static_call() can be useful

    <?php

    classA
    {
    public static function
    test()
    {
    var_dump('we were here');
    return static::class;
    }
    }

    class
    BextendsA
    {
    public static function
    test()
    {
    return
    self::class;
    }
    }

    class
    CextendsB
    {
    public static function
    test()
    {
    $grandParent=get_parent_class(parent::class);// $grandParent is A
    returnforward_static_call([$grandParent,__FUNCTION__]);// calls A::test()
    }
    }

    // prints
    // string(12) "we were here"
    // string(1) "C"
    var_dump(C::test());
    add a note
    To Top
    and to navigate •Enter to select •Esc to close
    PressEnter without selection to search using Google

    [8]ページ先頭

    ©2009-2025 Movatter.jp