Создание объекта из имени переменной - PullRequest
3 голосов
/ 01 апреля 2011

Как мне создать мой объект класса в одной строке из переменной:

$strClassName = 'CMSUsers';
$strModelName = $strClassName.'Model';
$strModelObj = new $strModelName();

Приведенный выше код успешно создает мой объект класса CMSUsersModel, но при попытке:всплывает ошибка .... говоря:

Parse error: syntax error, unexpected '(' in 

Ответы [ 2 ]

12 голосов
/ 01 апреля 2011

Нельзя использовать конкатенацию строк при создании объектов.

, если вы используете

class aa{}

$str = 'a';
$a = new $str.'a';   // Fatal error : class a not found



class aa{}

$str = 'a';
$a = new $str.$str; // Fatal error : class a not found

Так что вам следует использовать

$strModelName = $strClassName.'Model';
$strModelObj = new $strModelName();
1 голос
/ 01 апреля 2011

Я точно уверен, потому что я не в курсе классов и PHP, но я думаю, $strModelName - это определение класса, поэтому я думаю, что вы должны использовать одну две строки или написать что-то вроде этого:

$strModelName = 'CMSUsers'.'Model'; $strModelObj = new $strModelName();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...