I namespaced класс, чтобы использовать псевдонимы, чтобы предоставить сокращения для некоторых длинных имен классов:
namespace some_namespace; use \VeryLongClassnameWhichIUseOften as Short; class MyClass { public static method do_stuff() { Short::do_something(Short::do_other_stuff()); } }
Теперь есть сторонний код, который ожидает MyClass
в глобальном пространстве имен.
Могу ли я каким-либо образом экспортировать MyClass
в глобальное пространство имен?
Я пытался
class \MyClass { ... }
но, видимо, это не допустимо (неожиданный T_NS_SEPARATOR, ожидающий T_STRING).
Я также пробовал:
namespace some_namespace { use \VeryLongClassnameWhichIUseOften as Short; class MyClass { ... } } namespace { use \some_namespace\MyClass as MyClass; }
который не вызывает никакой дополнительной ошибки, но MyClass все еще недоступен в глобальном пространстве имен (класс «MyClass» не найден). Я не совсем понимаю, почему.
Поместите это в свое глобальное пространство имен:
use \some_namespace\MyClass as MyClass;
Я считаю, что это должно сработать.
Редактировать: Это не так. Это должно работать:
class_alias('\some_namespace\MyClass', 'MyClass');