是否可以在运行时向PHP中的类添加特征?

Tho*_*ria 18 php traits

简单的问题,是否可以在运行时动态地将特性添加到php类而不使用eval?

Gor*_*onM 11

正如格拉维奇所说,你不能不使用eval()或反射黑客(我甚至不确定).

但是你真的不太可能.

您可以通过动态类组合实现很多功能(将具有您想要的某些功能的类组合到另一个类中).这只是将具有所需功能的类的引用放入托管类中的变量.

class SomeClassWithNeededFunctionality {}

class SomeClassThatNeedsTheFunctionalityOfTheOtherClass {
    private $serviceClass = NULL;

    public function __construct (SomeClassWithNeededFunctionality $serviceClass) {
        $this -> serviceClass = $serviceClass;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 没有反射不提供这样的功能. (3认同)

Gla*_*vić 0

不。

ps您可以将它们放在独立文件中,并使用 include() 吗?