Есть ли возможность создать новый объект по строке, возвращаемой функцией или методом в PHP? Как какой-нибудь способ побега я не знаю?
Нерабочий пример:
new ($class->method())();
new "stringliteral"();
new ($class = $class->method())();
Вы можете сделать это с помощью ReflectionClass
function makeRef($className) {
return new ReflectionClass($className);
}
$obj = makeRef($class->method())->newInstance();
В PHP 5.4+ вы можете превратить это в однострочник:
$obj = (new ReflectionClass($class->method()))->newInstance();
Вы хотите динамическое создание класса?
вот чтение:
http://docstore.mik.ua/orelly/webprog/pcook/ch07_13.htm
В то время как можно вызывать динамическую функцию, выполнение этого для класса кажется трюком.
Да, это возможно. Присвойте строку переменной, затем создайте объект, используя эту переменную.
Ex.
<?php
class stringliteral{
function __construct()
{
echo"called";
}
}
function dumyFunc()
{
return 'stringliteral';
}
$str=dumyFunc();
if(class_exists($str))
$obj=new $str();
?>