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我认为你是对的:-)我觉得它有点扭曲,但另一方面它确实让代码更紧密。