Php 我是否*需要*执行`parent::_construct()`?

Php 我是否*需要*执行`parent::_construct()`?,php,phpstorm,Php,Phpstorm,我有一个类a,有一系列从a扩展而来的类(例如AA,AB,AC,AD)。这些“子类”都是从A的构造方法调用的 在PhpStorm中,例如,AA我在\u构造上收到一条警告,说:“缺少父构造函数调用”。然而,添加parent:\uu construct显然会导致类不断初始化的循环 我是否可以安全地忽略(并禁用)此警告,或者我的做法不好?我倾向于说,您不应该从父类的构造函数实例化子类 我建议采取更类似的措施: class A { public static function generate()

我有一个类
a
,有一系列从
a
扩展而来的类(例如
AA
AB
AC
AD
)。这些“子类”都是从
A
的构造方法调用的

在PhpStorm中,例如,
AA
我在
\u构造上收到一条警告,说:“缺少父构造函数调用”。然而,添加
parent:\uu construct
显然会导致类不断初始化的循环


我是否可以安全地忽略(并禁用)此警告,或者我的做法不好?

我倾向于说,您不应该从父类的构造函数实例化子类

我建议采取更类似的措施:

class A {
    public static function generate() {
        // current "constructor" code here
    }
}

这可以包括
newa
,然后将
newaa
附加到该实例,这将避免“循环”。

我倾向于说,您不应该从父类的构造函数实例化子类

我建议采取更类似的措施:

class A {
    public static function generate() {
        // current "constructor" code here
    }
}

这可以包括
newa
,然后将
newaa
附加到该实例,这样可以避免“循环”。

我也感觉不太好。然后我应该在
$A=new\NS\A
之后执行
$A->generate()
\NS\A::generate()
,因为它是一个静态方法。嗯,是的,这就是我的意思;-)我也感觉不太好。然后我应该在
$A=new\NS\A
之后执行
$A->generate()
\NS\A::generate()
,因为它是一个静态方法。嗯,是的,这就是我的意思;-)类永远不应该主动了解扩展它的类,这不仅仅是因为这样会创建逻辑循环。重新思考你的整个结构。这不是很适合工厂模式吗?@deceze我认为你是对的:-)我觉得它有点扭曲,但另一方面它确实让代码更加紧密。一个类永远不应该主动知道扩展它的类,不仅仅因为这会创建逻辑循环。重新思考你的整个结构。这不适合工厂模式吗?@deceze我认为你是对的:-)我觉得它有点扭曲,但另一方面它确实让代码更紧密。