Laravel/Composer:具有非复合名称的使用声明

2022-08-30 22:06:46

在我的laravel项目中,我创建了一个名为.模型驻留在文件夹中。我的作曲家文件自动加载:CustomerLinksapp/models

"autoload": {
    "classmap": [
        ...
        "app/models",
        ...

    ],
    ...
},

我在我的ExtendedUserController中有一个声明,它引用了:useCustomerLinks

<?php

...
use CustomerLinks;
...

class ExtendedUserController extends UserController {

我的理解是,由于 composer 文件中的 autoload 属性在 classmap 中有 app/模型,这意味着我应该能够在没有命名空间前缀的情况下使用。use CustomerLinks

这有效,但每当我对扩展用户控制器进行更改并重新加载浏览器时,我都会收到错误:

The use statement with non-compound name 'CustomerLinks' has no effect

该错误指向线路扩展用户控制器。use CustomerLinks

当我做一个一切都很好,但是当我必须遵循模式时,它会变得非常烦人composer dump-autoload

进行更改 ->转储自动加载 ->刷新浏览器 -> 重复

有没有办法处理错误?


答案 1

如果您不在命名空间中(即您位于根命名空间中),并且您要使用的类也不在命名空间中(即也在根命名空间中),则使用没有意义,因为没有它,代码将以相同的方式工作。您没有使用此语句导入任何内容。use

Composer与此无关,也没有任何其他自动加载。这就是PHP本身的工作方式。


答案 2

推荐