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

前端之家收集整理的这篇文章主要介绍了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();
    }
}

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

原文链接:https://www.f2er.com/php/130283.html

猜你在找的PHP相关文章