public function foo(?myObject $object = null)
// Do something
这似乎是多余的:使用typehint-“?”并将默认值设置为null?我可以在执行此方法的不同方式上期待不同的结果吗?
答案 0 :(得分:1)
根据php 7文档(如果有)
public function foo (?myObject $object)
{
}
调用该函数时,您必须覆盖null参数-否则会出现错误。
$this->foo(null); // it is ok
$this->foo(); // You have error
在php 5.x中,输入正确
public function foo ($object = null)
{
}
然后您可以调用该函数而无需显式传递null参数
$this->foo();
如果您不想将null传递给php7函数,则可以使用php5和php7连接-例如
public function foo (?myObject $object = null)
{
}
然后您可以使用方法调用而不必传递参数
$this->foo();
我认为(最后一个)解决方案是不切实际的,我建议选择一种与php5.x或php7(不要混用)的解决方案。
答案 1 :(得分:0)
另一种传递空值的方法。
function foo(?Type $t) {
}
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error