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

标签 php inheritance oop

我想知道是否有可能在 child 的 __construct() 之前调用 parent __construct() 并在 PHP 中继承。

例子:

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

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

new Form();

理想情况下,我可以在他们之间做点什么。如果这不可能,是否有替代方法可以让我这样做?

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

编辑:抱歉忘了添加这个。我宁愿不从子类调用父类。这仅仅是因为当您将其作为参数传递时,它会向 child 公开一些私有(private)数据(对于 parent )

这就是我想做的:

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

Tag.php

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

Form.php

class Form extends Tag {

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

有意义吗?

谢谢! 马特·穆勒

最佳答案

只需在 child 中调用 parent::__construct。

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

关于php - 在 PHP 中的子构造函数之前调用父构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079883/

相关文章:

php - 表 [tablename] 未锁定

php - 从 PhpStorm 删除的文件将存储在哪里?

c# - 如何在 mvc .net 上使用没有 "action is ambiguous"的基本 Controller 的 Action ?

windows - 使用 (SetACL) 自动执行 Windows HKCU 注册表权限的批处理文件

java - 避免对象中的参数参数具有相同的值

php - 在结果页面上启用用户 "sort by"

php - jQuery 手机 : Sending data from one page to the another

c# - 关于C#中构造函数的几个问题

C++单例继承问题

php - 调用扩展类方法问题