为什么在 laravel 中需要在 composer.json 中指定 类
Why in laravel do you need to specify classes in composer.json
为什么在laravel中指定类在composer.json中?我认为 composer 是一个管理项目依赖项的程序,但它也用于映射控制器 类 等。这是为什么?
您不需要在 composer.json
中指定您的 classes。当然,如果您愿意,可以这样做,但在大多数情况下,没有必要这样做。
让我们来看看 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"
),它将加载文件夹中的所有 classes。 递归.
因此,仅仅因为您想将控制器移动到 app/controllers
中的子目录并不意味着您必须更改 composer.json
中的任何内容
不过你必须做一件事,运行 composer dump-autoload
。你看,作曲家创建了一个文件,它存储 classes 和包含 class 的实际文件。您可以在 vendor/composer/autoload_classmap.php
.
找到此文件
条目看起来像:
'IndexController' => $baseDir . '/app/controllers/IndexController.php
如果您现在将 IndexController.php
移动到 app/controllers/foo
,应用程序仍会尝试从 app/controllers
开始包含它,直到您 运行 composer dump-autoload
这将重新生成 autoload_classmap.php
.
为什么在laravel中指定类在composer.json中?我认为 composer 是一个管理项目依赖项的程序,但它也用于映射控制器 类 等。这是为什么?
您不需要在 composer.json
中指定您的 classes。当然,如果您愿意,可以这样做,但在大多数情况下,没有必要这样做。
让我们来看看 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"
),它将加载文件夹中的所有 classes。 递归.
因此,仅仅因为您想将控制器移动到 app/controllers
中的子目录并不意味着您必须更改 composer.json
不过你必须做一件事,运行 composer dump-autoload
。你看,作曲家创建了一个文件,它存储 classes 和包含 class 的实际文件。您可以在 vendor/composer/autoload_classmap.php
.
条目看起来像:
'IndexController' => $baseDir . '/app/controllers/IndexController.php
如果您现在将 IndexController.php
移动到 app/controllers/foo
,应用程序仍会尝试从 app/controllers
开始包含它,直到您 运行 composer dump-autoload
这将重新生成 autoload_classmap.php
.