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

Mat*_*att 29 php oop inheritance

我想知道是否有可能在PHP的继承之前调用子__construct()之前的父__construct().

例:

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

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

new Form();
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以在它们之间做点什么.如果这是不可能的,有没有替代方案,这将允许我这样做?

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

编辑:抱歉忘了添加这个..我宁愿不从子类调用父类.这只是因为它将一些私有数据(对于父级)暴露给子级,当您将其作为参数传递时

这就是我想要做的:

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

Tag.php

class Tag {
     private $privateInfo;
     public $publicInfo;
     __construct($private, $public) {
         $this->privateInfo = $private;
         $this->publicInfo = $public;
     }
} 
Run Code Online (Sandbox Code Playgroud)

form.php的

class Form extends Tag {

     __construct() {
         echo $this->publicInfo;
     }
} 
Run Code Online (Sandbox Code Playgroud)

合理?

谢谢!马特穆勒

Den*_*huk 46

只需在子节点中调用parent :: __ construct即可.

class Form extends Tag
{
    function __construct()
    {
        parent::__construct();
        // Called second.
    }
}
Run Code Online (Sandbox Code Playgroud)