Как использовать переменную в пространстве имен? - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь откопать свои давно потерянные навыки PHP и поэтому наткнулся на проблему.У меня есть функция, которая инициализирует (не уверен, что это правильное слово) класс следующим образом:

$foo = new \Master\Slave\$bar();

$ bar - это определенный класс, очевидно.Но все это не работает.Кажется, это работает только тогда, когда я делаю следующее:

$foo = new $bar();

Но в моем первом примере выводится следующая ошибка:

unexpected T_VARIABLE, expecting T_STRING

Что означает, что я должен вручную ввестиимя класса, правильно?Но что, если я упрямый ботаник, который не хочет и не видит в этом эффективности?Отсюда мой вопрос;Как справиться с этим, не получая кровавую ошибку?

ОБНОВЛЕНИЕ: Понятно, как работает с оберткой \ Master \ Slave \ $ bar в переменной $.Не уверен, что это правильный способ сделать это, но он работает, и реквизиты переходят на Visual Idiot

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

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

0 голосов
/ 09 марта 2012

AFAIK, пространство имен не работает так, как вы пытаетесь.

Вот как вы должны это сделать

namespace Master\Slave;
$bar = "theclassname";
class $bar() {
}

Документы

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