Оператор use
можно рассматривать как макрос предварительной обработки C, если вы знакомы с ним: он переписывает текущий файл во время компиляции , чтобы Вы пишете короткое имя для длинного имени класса, функции или константы. Он не запускает автозагрузку, так как ему все равно, существует класс или нет.
Например, если вы пишете use Foo\Bar\Baz as X
, то везде, где X
упоминается как имя класса, компилятор PHP переписывает это, чтобы упомянуть Foo\Bar\Baz
. Только когда код, упоминающий класс (например, new X
, X::FOO
, X::doSomething()
), фактически запущен, он видит, действительно ли существует класс Foo\Bar\Baz
, и запускает автозагрузчик по мере необходимости.
Общая форма use Foo\Bar\Baz
является просто сокращением для use Foo\Bar\Baz as Baz
, присваивая псевдоним Baz
имени класса Foo\Bar\Baz
.
Как указано в , руководство указывает, что псевдоним обрабатывается только во время компиляции, поэтому динамический поиск не будет его использовать. В приведенном выше примере class_exists('X')
вернет false, но вы можете принудительно развернуть имя класса во время выполнения, используя class_exists(X::class)
- X::class
, которое компилятор расширит до строки '\Foo\Bar\Baz'
.
То, улучшают ли операторы use
ваш код, поэтому полностью зависит от стиля: цель состоит в том, чтобы ваш код был более читабельным без длинных полных имен классов, но это не будет иметь никакого значения для того, как код на самом деле работает.