I was looking into this problem because the class is based on a certain context that has to be given. So I made a function in my class that will return the class you require like so:
/**
* Instantiate a class by class name in variable
*
* @param string $className The name of the class
* @return mixed The instantiated class
*/
protected function getClass($className)
{
return new $className;
}
Therefore you can call it by using $class = new $this->getClass(static::CLASSNAME);
when you defined a constant within the current class that holds the name of the class you want to instantiate. In your case you can use it without the 'static::
' or with whatever variable you'd like to use. Do not forget to implement some error handling.