PHP> 5.4:覆盖具有不同签名的构造函数

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP> 5.4:覆盖具有不同签名的构造函数脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我们知道 PHP不接受带有 different signature than the parent的子方法.我认为构造函数是一样的:PHP文档 @L_126_5@那个

但是,似乎继承的构造函数PHP版本中仍然可以不同> 5.4.例如,以下代码不会触发任何警告或通知

class Something { }
class SomeOtherThing { }

class Foo
{
    public function __construct(Something $foo)
    {
    }

    public function yay()
    {
        echo 'yay';
    }
}

class Bar extends Foo
{
    public function __construct($foo,SomeOtherThing $bar = null)
    {
    }
}

$x = new Bar(new Something());
$x->yay();

根据文档,代码应该触发错误,因为构造函数签名不同.

PHP 5.6.4上试过这个.与other versions相同的效果.

那么,那是什么呢?尽管文档说的是什么,不同的构造函数签名仍然合法吗?或者这是一个将在以后的版本中修复的错误

解决方法

根据 documentation

所以,这就是为什么你没有得到E_STRICT级别的错误.也许它会触发不同程度的东西.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP> 5.4:覆盖具有不同签名的构造函数全部内容,希望文章能够帮你解决PHP> 5.4:覆盖具有不同签名的构造函数所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。