为什么在 laravel 中你需要在 composer.json 中指定类



为什么在 laravel 中要在 composer.json 中指定类? 我认为 composer 是一个管理项目依赖项的程序,但它也用于映射您的控制器类。 为什么?

您无需在 composer.json 中指定您的类。当然,如果您愿意,您可以这样做,但在大多数情况下,没有必要这样做。

让我们来看看拉拉维尔默认composer.jsonautoload部分

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

classmap基本上意味着自动加载此处指定的所有内容。如果它是一个目录(如"app/controllers"),它将加载文件夹中的所有类。递归。

因此,仅仅因为您想将控制器移动到app/controllers中的子目录并不意味着您必须更改composer.json

不过,您必须做一件事,运行composer dump-autoload。你看,作曲家创建一个文件,它在其中存储类和包含类的实际文件。您可以在 vendor/composer/autoload_classmap.php 中找到此文件。

这些条目如下所示:

'IndexController' => $baseDir . '/app/controllers/IndexController.php

如果您现在IndexController.php移动到app/controllers/foo应用程序仍将尝试从app/controllers开始包含它,直到您运行将重新生成autoload_classmap.php composer dump-autoload

相关内容

  • 没有找到相关文章

最新更新