首页 > 解决方案 > laravel 中的作曲家自动加载

问题描述

查看 laravel 项目中的 composer.json 文件,我可以在下面找到

    "autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "classmap": [
        "database/seeds",
        "database/factories"
    ]
},

据我所知,App\:"app/" 表示名称空间以 App 开头,其源文件位于 app/ 目录下,并且遵循 psr-4。

但是,在供应商目录下有大量的包,例如以 Illuminate 开头的包。它们是在 psr-4 下还是在 classmap 下?为什么它们没有在 composer.json 文件中声明?

标签: laravelcomposer-phpautoloadpsr-4

解决方案


每个包都应该负责自动加载

像其他人一样将 Laravel视为一个单独的包

composer.json您可以分别在每个包中找到供应商文件

这是目录结构

<web-root>
    |--------src/
    |           |--------App/
    |           |
    |           |--------Test/
    |
    |---------library/
    |
    |---------vendor/
    |           |
    |           |---------composer/
    |           |           |---------autoload_psr4.php
    |           |           
    |           |----------autoload.php
    |
    |-----------composer.json
    |

你可以看看我对这个自动加载类图的另一个答案


推荐阅读