使用参数调用静态函数,没有成功执行的参数

时间:2014-10-07 04:28:17

标签: php function static static-methods

您好我正在使用forward_static_call_array()函数,我有一个例子。

<?php

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

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

    public static function test() {
        echo self::NAME, "<br/>";
        forward_static_call_array(array('A', 'test'), array('more', 'args'));
        forward_static_call_array( 'test', array('other', 'args'));
    }
}

B::test("bar");

function test() {
        $args = func_get_args();
        echo "C ".join(',', $args)."<br/>";
    }

?>

结果是

B
B more,args
C other,args

但是当我查看代码时,我看到它正在调用B::test("bar");其他2个test()函数func_get_args()。但B::test也没有。所以我认为应该会出现错误。但它工作正常。

怎么样?

  • 所以当我们在函数中使用forward_static_call_array()时,没有必要在函数中使用参数吗?

  • 可以使用参数调用没有任何参数的PHP静态函数吗?

请解释一下。非常感谢你。

1 个答案:

答案 0 :(得分:1)

使用forward_static_call_array并不特别。每个函数或方法都有这种行为。

  

PHP支持用户定义的可变长度参数列表   功能。这是使用PHP 5.6和中的...标记实现的   稍后,使用func_num_args(),func_get_arg()和   PHP 5.5及更早版本中的func_get_args()函数。

function sum() {
    $acc = 0;
    foreach (func_get_args() as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list.old