为什么PHP没有默认构造函数?

前端之家收集整理的这篇文章主要介绍了为什么PHP没有默认构造函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么我不能使用这样的代码
<?PHP

class NoConstructor {
}

class ChildWithConstructor extends NoConstructor {
    public function __construct() {
        parent::__construct();
        // do something
    }
}

$foo = new ChildWithConstructor();
// **Fatal error: Cannot call constructor in file.PHP on line 8**

例如. Java类具有默认值,没有args构造函数.即使没有明确定义也可以调用它.

当我们从父类删除args构造函数时,PHP行为可能会导致麻烦,例如.当我们认为它不再需要了.

有没有人知道为什么PHP创建者这样做?

Java classes have default,no args constructor.

Does anyone know why PHP creators made it this way?

Java是一种计划语言.经过严格的考虑和正式的规定.为了简化向开发人员和实施者的简单性,旨在尽可能长时间地保持最小的变化.肯定没有达到他们希望的程度,但是您仍然可以使用Java 1.0代码,编译并在现代虚拟机上运行它.

PHP的设计师从来没有将语言设计成几乎这么极端.他们一起去弥补.无论好是坏,他们都会适度地将语言分开,并在下一个版本中重新构建语言.自从PHP 1和2以来,它的变化是无法确定的.即使是最近,在PHP 5中,对于对象来说,从副值到逐个引用语义也发生了巨大的变化.这是一个同样灿烂的方法,给我们带来了魔术报价,缺乏Unicode,不一致的命名(并经常重命名)的功能,以及一个甚至没有错误提示的解析器(即使使用error_reporting(-1);)也会快速解释数字字面值09为0.

PHP behavior can cause troubles when we remove no args constructor from parent class,eg. when we think it’s not needed any more.

你可以要求在bugs.PHP.net上进行更改,但是有可能会忽略它,或者让你忽略“抱歉,但是问题并不意味着PHP本身存在问题”.

猜你在找的PHP相关文章