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 работает сам по себе.