仅在定义了其他类时才扩展PHP类

时间:2013-06-26 15:54:32

标签: php class oop extend

有些人可能认为这可能是不好的做法,因为潜在的不一致,但是,我想知道如果(如果可能的话)我可以告诉一个类扩展另一个类,但只有在它定义的时候。

我知道这不起作用,但我有效的是:

class MyClass extends (class_exists('OtherClass') ? OtherClass : null)

或者,如果类存在,可能会在constructor中运行以设置扩展的函数。

我当然想避免..

if(class_exists('OtherClass'))
{
    class MyClass extends OtherClass
    {
        //The class
    }
}
else
{
    class MyClass
    {
        //The class
    }
}

..因为代码大量重复。

我在谷歌和网站上寻找答案,但没有发现 - 如果我复制了一个问题,请告诉我。

1 个答案:

答案 0 :(得分:11)

您可以创建一个在class_exists()条件内创建的中间人类,但没有自己的行为:

if (class_exists('OtherClass')) {
    class MiddleManClass extends OtherClass { }
} else {
    class MiddleManClass { }
}

class MyClass extends MiddleManClass {
    // The class code here
}

这使得类层次结构包含一个更多的类,但没有重复的代码(实际上没有代码),MyClass内的方法可以OtherClassparent::到达$this像往常一样,如果有的话。