1

好的,所以我的 Laravel 应用程序中有一个项目文件夹。命名为 TLGD(如果我的站点的名称)。在里面我创建了一个表单验证助手,用于从控制器中删除不必要的代码。

这是文件夹结构:

TGLD\Validation\Forms

在这里我有我的表单助手类

现在在控制器中只是为了测试它,我通过 php 中的 use methd 调用类,如下所示:

use TGLD\Validation\Forms\Login;

login 是登录验证的类

现在效果很好,所以我尝试自动加载 TGLD 文件夹,所以我不需要在每个控制器中添加使用行。这是我的 composer.json 文件

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ],
    "psr-4": {
        "TGLD\\": "app/TGLD"
    }
},

但是当我自动加载它时,它给了我我的登录类不存在的错误,这意味着自动加载器不工作。有语法错误还是我遗漏了什么?我跑了

composer dump-autoload -o

好吧,任何建议都有帮助,提前谢谢你

4

1 回答 1

0

你想做的事是做不到的。

您必须在某处使用完整的命名空间来标识您要使用的类。你有几个选项可以做到这一点

  1. 使用具有这样命名空间的类的完全限定名称:new \TGLD\Validation\Forms\Login().
  2. 使用use将命名类导入此文件的当前命名空间的子句use TGLD\Validation\Forms\Login; ... new Login();
  3. 在 中使用命名空间的一部分use,并在类名中使用其余部分:use TGLD\Validation\Forms; ... new Forms\Login();

在您以一种或另一种方式选择类名后,PHP 知道它需要哪个类,然后如果 PHP 仍然不知道该类,则触发自动加载。

所以你不能影响自动加载类的命名。

于 2014-06-01T21:57:51.423 回答