PHP   发布时间:2019-11-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 我必须在构造函数的第一行调用parent :: __ construct()吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道在 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();
    }
}

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

大佬总结

以上是大佬教程为你收集整理的php – 我必须在构造函数的第一行调用parent :: __ construct()吗?全部内容,希望文章能够帮你解决php – 我必须在构造函数的第一行调用parent :: __ construct()吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

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