为什么在 laravel 中要在 composer.json 中指定类? 我认为 composer 是一个管理项目依赖项的程序,但它也用于映射您的控制器类。 为什么?
您无需在 composer.json
中指定您的类。当然,如果您愿意,您可以这样做,但在大多数情况下,没有必要这样做。
让我们来看看拉拉维尔默认composer.json
的autoload
部分
"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
。