Я заметил, что когда я использую namespacing, динамические классы загрузки не работают так же, как при загрузке их статически. Так, например, без использования пространств имен следующие эквиваленты в их действии создания экземпляра класса FooBar
:
$foobar = new FooBar();
и
$classname = "FooBar";
$foobar = new $classname;
Однако, если при использовании пространства имен у меня есть такой код:
<?php
namespace Structure\Library;
$foobar = new UserService();
$classname = "UserService";
$barfoo = new $classname;
В этом случае полное имя класса UserService
равно Structure\Library\UserService
, и если я использую полное имя, оно работает в обоих случаях, но если я использую только имя ярлыка 'UserService'
, оно работает только при создании экземпляра с помощью статический метод. Есть ли способ заставить его работать для обоих?
P.S. Я использую автозагрузчик для всех классов... но я предполагаю, что проблема происходит перед автозагрузчиком и выполняется строка класса, передаваемая автозагрузчику.