Как создать объект из строки? - PullRequest
3 голосов
/ 17 января 2010

Я попробовал код ниже:

$dyn = "new ". $className . "(" .$param1 . ", ". $param2 . ");";
$obj = eval($dyn);

Это компилируется, но это ноль.

Как вы можете динамически создавать объекты в PHP?

Ответы [ 3 ]

19 голосов
/ 17 января 2010
$class = 'ClassName';
$obj = new $class($arg1, $arg2);
4 голосов
/ 17 января 2010

Если вы действительно хотите использовать eval - что, скорее всего, не следует делать, если вы новичок в PHP;) - вы бы сделали что-то более похожее на ...

$dyn = "new ". $className . "(" .$param1 . ", ". $param2 . ");";
eval("\$obj = $dyn");
1 голос
/ 17 января 2010

Чего вы на самом деле пытаетесь достичь? Eval будет работать, но это, вероятно, не очень хорошая идея.

Что вам может понадобиться, это реализовать фабрику для ваших объектов, которая принимает строку, определяющую, какой класс загружать, и необязательный массив для параметров конструкторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...