为什么PHP'的类型提示允许NULL代替对象?


Why is PHP's type hinting allowing NULL in place of an object?

为什么PHP的类型提示允许一个对象通过,当它是NULL?代码如下:

public function addBodySegments(Mage_Sales_Model_Order $order)
{
    if ($order === null) {
        echo 'fail';
    }
}

我有not在函数签名中提供了一个"$order = null"默认值,所以我的理解是PHP应该保证我在$order中有一个对象的实例。

Mage_Sales_Model_Order的作者是否写了这样一个类,它以某种方式传递类型提示,或者这里有一个我不知道的更通用的PHP事情?

我明白了

我的代码中有多个部分调用addBodySegments(),其中一个调用它没有任何参数。令人惊讶的是,当您在不提供任何参数的情况下调用该方法时,PHP的类型提示会被绕过。

奇妙的设计选择