Na toto se dá použít reflexe, přesněji ReflectionClass::newInstanceArgs.
class Creator
{
public function newObj($className, $constructorArguments = [])
{
$reflector = new ReflectionClass($className);
$object = $reflector->newInstanceArgs($constructorArguments);
return $object;
}
public function testNewObj()
{
$this->newObj('className', ['arg1', 'arg2']);
}
}
Pozor jenom na to, že reflexe je z principu pomalá (sice se s každou verzí PHP zrychluje, ale i tak), takže používat s mírou.