PHP: Создать новый объект класса непосредственно из строкового возвращаемого значения (строковый литерал)

Есть ли возможность создать новый объект по строке, возвращаемой функцией или методом в PHP? Как какой-нибудь способ побега я не знаю?

Нерабочий пример:

new ($class->method())();
new "stringliteral"();
new ($class = $class->method())();

0

Решение

Вы можете сделать это с помощью ReflectionClass

function makeRef($className) {
return new ReflectionClass($className);
}
$obj = makeRef($class->method())->newInstance();

В PHP 5.4+ вы можете превратить это в однострочник:

$obj = (new ReflectionClass($class->method()))->newInstance();
3

Другие решения

Вы хотите динамическое создание класса?
вот чтение:
http://docstore.mik.ua/orelly/webprog/pcook/ch07_13.htm

В то время как можно вызывать динамическую функцию, выполнение этого для класса кажется трюком.

0

Да, это возможно. Присвойте строку переменной, затем создайте объект, используя эту переменную.

Ex.

<?php
class stringliteral{
function __construct()
{
echo"called";
}
}
function dumyFunc()
{
return 'stringliteral';
}
$str=dumyFunc();
if(class_exists($str))
$obj=new $str();
?>
-1
По вопросам рекламы [email protected]