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

时间:2015-01-17 20:39:00

标签: laravel composer-php laravel-routing

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

1 个答案:

答案 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>