Laravel/Composer: оператор использования с не-составным именем
В моем проекте laravel я создал модель под названием CustomerLinks
. Модель находится в папке app/models
. Мой файл-композитор имеет автозагрузку:
"autoload": {
"classmap": [
...
"app/models",
...
],
...
},
И у меня есть оператор use
в моем ExtendedUserController, который ссылается на CustomerLinks
:
<?php
...
use CustomerLinks;
...
class ExtendedUserController extends UserController {
Я понимаю, что, поскольку свойство autoload в файле композитора имеет приложение/модели в classmap, это означает, что я должен использовать use CustomerLinks
без префикса пространства имен.
Это работает, но в любое время, когда я вношу изменения в свой ExtendedUserControler и перезагружаю свой браузер, я получаю сообщение об ошибке:
The use statement with non-compound name 'CustomerLinks' has no effect
Ошибка указывает на расширенный пользовательский контроллер use CustomerLinks
.
Когда я делаю composer dump-autoload
, все работает нормально, но становится крайне раздражающим, когда я должен следовать шаблону
внести изменения → dump autoload → обновить браузер → повторить
Есть ли способ справиться с ошибкой?
Ответы
Ответ 1
Если вы не находитесь в пространстве имен (т.е. находитесь в корневом пространстве имен), а класс, который вы хотите использовать, также не находится в пространстве имен (т.е. также в корневом пространстве имен), то использование use
не имеет смысла, потому что код будет работать без него. Вы не импортируете ничего с этим утверждением.
Композитор не имеет к этому никакого отношения, у него нет другой автозагрузки. Это как PHP работает сам по себе.