This question about syntax/syntax capabilities in PHP. Take for example, using variables to store class names when declaring objects:
$className= 'myClass'; $obj = new $className;
I was wondering if there were some way to do the same with constants. Something along the lines of:
define('CLASS_NAME','myClass'); $obj = new {CLASS_NAME};
This doesn’t work. Obviously I could just use a variable as an intermediary step, but I was mostly just wondering for edification purposes whether this was a formatting issue or if this is just not possible to do directly in this way.
Advertisement
Answer
You can’t do this with a sensible expression in PHP, as u_mulder says.
You can do it in one line with reflection.
$obj = (new ReflectionClass(CLASS_NAME))->newInstance();
Any parameters need to go into the newInstance
call.
This is a silly idea, not least because having variable behaviour depending on class names in strings probably means bad architecture. Don’t do it. But you asked if it is possible, and yes, it is.