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

php – 我必须在构造函数的第一行调用parent :: __ construct()吗?

发布时间:2020-05-25 08:34:46 所属栏目:PHP 来源:互联网
导读:我知道在 Java中,构造函数中的super()必须被调用为重写构造函数的第一行. 这是否也适用于PHP中的parent :: __ construct()调用? 我发现自己编写了一个这样的Exception类: class MyException extends Exception { public function __construct($some_data) {

我知道在 Java中,构造函数中的super()必须被调用为重写构造函数的第一行.

这是否也适用于PHP中的parent :: __ construct()调用?

我发现自己编写了一个这样的Exception类:

class MyException extends Exception {

  public function __construct($some_data) {

    $message = '';
    $message .= format_data($some_data);
    $message .= ' was passed but was not expected';

    parent::__construct($message);
  }

}

我想知道这是否会被认为是PHP中的错误/错误做法.

如果您希望执行父构造函数中的代码,则需要在某个时刻调用parent :: __ construct(…).这样做在技术上并不重要.有时在调用父类的构造函数之前在重写的构造函数中做一些工作更有意义,有时你依赖于父类的构造函数所做的工作,然后才能在重写的构造函数中工作.

根据经验,我会说你应该尽快调用父的构造函数.如果在调用父构造函数之前需要执行某些操作,请执行此操作.如果没有,请立即拨打电话.这是为了避免父的构造函数撤消您在重写的构造函数中所做的任何工作,例如设置某些属性.

class A {
    function __construct() {
        $this->foo = 'bar';
    }
}

class B extends A {
    function __construct() {
        // parent::__construct();
        $this->foo = 'baz';
        // parent::__construct();
    }
}

在上面的示例中,调用父项的第一个或最后一个之间的差异会对结果对象产生很大的影响.哪个更合适取决于你想要做什么.

(编辑:安卓应用网)

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

    推荐文章
      热点阅读