有些人可能认为这可能是不好的做法,因为潜在的不一致,但是,我想知道如果(如果可能的话)我可以告诉一个类扩展另一个类,但只有在它定义的时候。
我知道这不起作用,但我有效的是:
class MyClass extends (class_exists('OtherClass') ? OtherClass : null)
或者,如果类存在,可能会在constructor
中运行以设置扩展的函数。
我当然想避免..
if(class_exists('OtherClass'))
{
class MyClass extends OtherClass
{
//The class
}
}
else
{
class MyClass
{
//The class
}
}
..因为代码大量重复。
我在谷歌和网站上寻找答案,但没有发现 - 如果我复制了一个问题,请告诉我。
答案 0 :(得分:11)
您可以创建一个在class_exists()
条件内创建的中间人类,但没有自己的行为:
if (class_exists('OtherClass')) {
class MiddleManClass extends OtherClass { }
} else {
class MiddleManClass { }
}
class MyClass extends MiddleManClass {
// The class code here
}
这使得类层次结构包含一个更多的类,但没有重复的代码(实际上没有代码),MyClass
内的方法可以OtherClass
或parent::
到达$this
像往常一样,如果有的话。