有人可能会争辩说,由于潜在的不一致,这可能是不好的做法,但是,我想知道如何(如果可能的话)告诉一个类扩展另一个类,但前提是要对它进行定义。
我知道这是行不通的,但是我要有效地解决的是:
class MyClass extends (class_exists('OtherClass') ? OtherClass : null)
或者,如果存在该类,则可能会在
constructor
中运行以设置扩展的函数。我当然想避免..
if(class_exists('OtherClass'))
{
class MyClass extends OtherClass
{
//The class
}
}
else
{
class MyClass
{
//The class
}
}
..由于大量的代码重复。
我一直在Google及其网站上寻找答案,但一无所获-如果我重复了一个问题,请告诉我。
最佳答案
您可以创建在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
(如果可用)。