PHP冗余typehint默认为null和?type

时间:2018-08-07 08:53:04

标签: php null type-hinting

public function foo(?myObject $object = null)
    // Do something

这似乎是多余的:使用typehint-“?”并将默认值设置为null?我可以在执行此方法的不同方式上期待不同的结果吗?

2 个答案:

答案 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