is it possible to add traits to a class in PHP in runtime?

Thomas Lauria picture Thomas Lauria · Jan 16, 2013 · Viewed 11.1k times · Source

Simple question, is it possible to dynamically add traits to a php class in runtime without using eval?

Answer

GordonM picture GordonM · Jan 16, 2013

As Glavic said, you can't without using eval() or reflection hacks (and I'm not even sure about that).

But it's very unlikely you really need to.

You can achieve a lot with dynamic class composition (composing a class with some functionality you want into another class). That's simply a matter of putting a reference to the class with the desired functionality into a variable in the hosting class.

class SomeClassWithNeededFunctionality {}

class SomeClassThatNeedsTheFunctionalityOfTheOtherClass {
    private $serviceClass = NULL;

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