嗨,我正在使用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静态函数可以用参数调用吗
请解释一下。非常感谢。
使用forward_static_call_array
并不特别。每个函数或方法都有这种行为。
PHP支持用户定义的可变长度参数列表功能。这是使用。。。PHP 5.6和稍后,并使用func_num_args()、func_get_arg()和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-参数列表
http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list.old