Подтвердить что ты не робот

PHP, новый класс переменных в пространстве имен

Я экспериментирую с функциональностью PHP namespacing PHP 5.3, и я просто не могу понять, как создать экземпляр нового класса с префиксом пространства имен.

В настоящее время это прекрасно работает:

<?php
new $className($args);
?>

Но как я могу добавить свое пространство имен перед переменной classname? Следующий пример не работает.

<?php
new My\Namespace\$className($args);
?>

В этом примере: Ошибка анализа: синтаксическая ошибка, неожиданный T_VARIABLE

4b9b3361

Ответ 1

Попробуйте это:

$class = "My\Namespace\\$className";
new $class();

Должно быть две обратной косой черты \\ перед переменной $className, чтобы избежать ее

Ответ 2

Вот как я это сделал:

$classPath = sprintf('My\Namespace\%s', $className);
$class = new $classPath;

Обратите внимание на одинарные кавычки вместо двойных.