我不是新手,但我发现可选参数有点......独特,或者只是我。
如果我有以下内容:
class SomeClass{
public function some_method($required_param, $optional_array = array()){
var_dump($optional_array); exit;
}
}
然后执行以下操作:
$test = new SomeClass();
$test->some_method('required', array('optional'));
我以[{1}} var_dump
收回。
我甚至尝试过:
array(0){}
结果相同。是因为我已经定义$test = new SomeClass();
$array = array('optional')
$test->some_method('required', $array);
已被设置为空数组?我发誓这就是你如何设置optional parameters, according to example 3那么为什么它坚持使用默认的空数组呢?为什么它没有看到嘿,这已经确定了。
答案 0 :(得分:1)
class SomeClass{
public function some_method($required_param, $optional_array = array()){
var_dump($optional_array); exit;
}
}
使用var_dump($optional_array);
而不是var_dump($optional_array());
答案 1 :(得分:0)
您正在尝试访问您的阵列,就像它是一个函数一样。所以删除()
它会起作用:
var_dump($optional_array);
而不是
var_dump($optional_array());
答案 2 :(得分:0)
你的var_dump上有一组多余的括号。它试图调用作为数组传入的匿名函数。
试试这个:
class SomeClass{
public function some_method($required_param, $optional_array = array()){
var_dump($optional_array);
}
}
$test = new SomeClass();
print "one\n";
$test->some_method('required', array('optional'));
print "two\n";
$test->some_method('required');
我机器上的输出是:
one
array(1) {
[0]=>
string(8) "optional"
}
two
array(0) {
}