在 PHP 中调用父构造函数之前调用父构造函数

2022-08-30 15:15:07

我想知道是否可以在PHP中具有继承权的孩子__construct()之前调用父__construct()。

例:

class Tag {
     __construct() {
         // Called first.
     }
}

class Form extends Tag {
     __construct() {
         // Called second.
     }
} 

new Form();

理想情况下,我能够在它们之间做一些事情。如果这是不可能的,有没有替代方案,允许我这样做?

我想这样做的原因是能够加载一堆特定于表单在调用__construct()时可以使用的标签的默认设置。

编辑:对不起忘了添加这个..我宁愿不从子类调用父类。这仅仅是因为它向孩子公开了一些私人数据(对于父数据),当你把它作为一个参数传递时。

这就是我想做的:

$tag = new Tag($privateInfo, $publicInfo);
$tag->extend(new Form()); // Ideal function, prob doesn't work with inheritance.

标签.php

class Tag {
     private $privateInfo;
     public $publicInfo;
     __construct($private, $public) {
         $this->privateInfo = $private;
         $this->publicInfo = $public;
     }
} 

形式.php

class Form extends Tag {

     __construct() {
         echo $this->publicInfo;
     }
} 

有意义?

谢谢!马特·穆勒


答案 1

只需打电话给家长::__construct在孩子身上。

class Form extends Tag
{
    function __construct()
    {
        parent::__construct();
        // Called second.
    }
}

答案 2

是的,只需调用您的构造parent::__construct()


推荐