加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-25 09:51:04 所属栏目:PHP 来源:互联网
导读:为什么我不能使用这样的代码? ?phpclass NoConstructor {}class ChildWithConstructor extends NoConstructor { public function __construct() { parent::__construct(); // do something }}$f

为什么我不能使用这样的代码?

<?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本身存在问题”.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读