您好我正在使用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()
时,没有必要在函数中使用参数吗?或
请解释一下。非常感谢你。
答案 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