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

2022-08-30 21:17:19

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


答案 1

正如Glavic所说,你不能不使用eval()或反射黑客(我甚至不确定这一点)。

但你真的不太可能需要这样做。

你可以通过动态类组合(将一个具有你想要的某些功能的类组合到另一个类中)实现很多目标。只需将对具有所需功能的类的引用放入宿主类中的变量中即可。

class SomeClassWithNeededFunctionality {}

class SomeClassThatNeedsTheFunctionalityOfTheOtherClass {
    private $serviceClass = NULL;

    public function __construct (SomeClassWithNeededFunctionality $serviceClass) {
        $this -> serviceClass = $serviceClass;
    }
}

答案 2

不。

p.s. 你可以把它们放在独立的文件中,并使用 include() ?


推荐