就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,访问帮助中心 /help/reopen-questions 以获得指导。
为什么我不能使用这样的代码?
<?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 类有默认的、无参数的构造函数。即使没有明确定义,也可以调用它。
当我们从父类中删除没有参数的构造函数时,PHP 行为可能会导致麻烦,例如。当我们认为不再需要它时。
有谁知道 PHP 创建者为什么这样做?
Java 类有默认的、无参数的构造函数。
有谁知道 PHP 创建者为什么这样做?
Java 是一种有计划的语言。它从一开始就经过严格考虑和正式指定。它的目的是为了向后和向前兼容性、为了开发人员和实施者等的简单性而以最小的变化尽可能地持续下去。肯定没有达到他们希望的程度,但您仍然可以采用 Java 1.0 代码,对其进行编译并在现代虚拟机上运行。
PHP 的设计者从未将这种语言设计得如此极端。他们边走边弥补。无论好坏,他们都愿意放弃该语言并在下一个版本中重建它。自 PHP 1 和 2 以来,它已经发生了不可识别的变化。即使在最近,在 PHP 5 中,对象语义也发生了从按值到按引用语义的巨大变化。正是这种出色的方法为我们带来了神奇的引号、Unicode 的缺乏、命名不一致(并且经常重命名)的函数,以及一个甚至没有任何错误提示的解析器(即使使用error_reporting(-1);
),将愉快地解释数字文字09
as 0
.
当我们从父类中删除没有参数的构造函数时,PHP 行为可能会导致麻烦,例如。当我们认为不再需要它时。
您可以在 bugs.php.net 上请求对此进行更改,但他们很可能会忽略它或用“抱歉,您的问题并不意味着 PHP 本身有问题......” .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)