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

仅当定义了其他类时才扩展PHP类,php,class,oop,extend,Php,Class,Oop,Extend,有些人可能会说,由于潜在的不一致性,这可能是一种不好的做法,但是,我想知道如何(如果可能的话)告诉一个类扩展另一个类,但前提是它已经定义 我知道这不起作用,但我真正想要的是: class MyClass extends (class_exists('OtherClass') ? OtherClass : null) 或者,如果类存在,则可以在构造函数中运行一个函数来设置扩展 我当然想避免 if(class_exists('OtherClass')) { class MyClass ex

有些人可能会说,由于潜在的不一致性,这可能是一种不好的做法,但是,我想知道如何(如果可能的话)告诉一个类扩展另一个类,但前提是它已经定义

我知道这不起作用,但我真正想要的是:

class MyClass extends (class_exists('OtherClass') ? OtherClass : null)
或者,如果类存在,则可以在
构造函数中运行一个函数来设置扩展

我当然想避免

if(class_exists('OtherClass'))
{
    class MyClass extends OtherClass
    {
        //The class
    }
}
else
{
    class MyClass
    {
        //The class
    }
}
。。因为大量的代码重复


我在谷歌和网站上到处寻找答案,但什么也没找到——如果我重复了一个问题,一定要让我知道。

你可以创建一个中间人类,它是在
class\u exists()
条件下创建的,但没有自己的行为:

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

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

这使得类层次结构包含一个以上的类,但没有重复的代码(实际上没有代码),并且
MyClass
中的方法可以通过
parent::
$This
与往常一样,如果它可用。

当然可以!我在脑子里对这样的东西进行了伪编码,但无法编造任何有用的东西。干杯。昨天我在我工作的一个项目的遗留代码中看到了相同的代码。然后我在问如何做手术才是更好的方法。我认为有几种与PHP标准相关的解决方案。此外,我无法看到该解决方案可能导致的问题,例如:自动加载、apc等。谢谢。