我在互联网上发现了一个php类,它在方法参数中使用了数组$ options = []:
class TADFactory
{
private $options;
public function __construct(array $options = [])
{
$this->options = $options;
}
//some other methods here
}
并在page.php文件中
$tad_factory = new TADFactory(['ip'=>'192.168.0.1']);
//some other stuffs here
但是在浏览器中执行page.php文件后,它显示:
Unexpected `[` in page.php file at line 1, expecting `)`....
但根据php库文档,我必须以这种方式在参数中使用多维数组。
我无法理解TADFactory类参数中的array $options = []
是什么意思以及错误抛出的原因?
答案 0 :(得分:0)
那是default argument value。这是你声明一个参数是可选的,如果没有提供,它默认应该具有什么值。
function add($x, $y = 5) {
return $x + $y;
}
echo add(5, 10); // 15
echo add(7); // 12
对于数组注释,即type hint(也称为类型声明),这意味着您必须将函数传递给数组,否则将引发错误。类型提示在动态语言中相当复杂且有必要,但它可能值得了解。
function sum(array $nums) {
return array_sum($nums);
}
echo sum([1, 2, 3]); // 6
echo sum(5); // throws an error
注意:如果默认参数值为null,则只能将类型提示与默认参数值组合在一起。