为什么在laravel中你要在composer.json中指定类?我认为composer是一个管理项目依赖项的程序,但它也用于映射控制器类。那是为什么?
答案 0 :(得分:3)
您不需要在composer.json
中指定您的课程。当然,如果你愿意,你可以这样做,但对于大多数情况,没有必要这样做。
让我们来看看Laravels默认autoload
composer.json
部分
"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
。你看,composer创建了一个存储类的文件和包含该类的实际文件。您可以在vendor/composer/autoload_classmap.php
找到此文件。
条目如下:
'IndexController' => $baseDir . '/app/controllers/IndexController.php
如果您现在将IndexController.php
移至app/controllers/foo
,应用程序仍会尝试将其app/controllers
包括在内,直到您运行composer dump-autoload
,这将重新生成autoload_classmap.php
。< / p>