如何在 PHP 自动加载中区分供应商 类 和本机 类?

How to distinct vendor classes and native classes in PHP autoload?

如何在 PHP 自动加载中区分向量 classes 和本机项目 classes? 查看部分文件和命名空间结构:

app/
app/Models/
app/Models/User.php
app/Contoller/
app/Contoller/Login.php
vendor/
vendor/company/package/Helper.php

现在 PSR-4 说如果需要包含 class,自动加载必须从供应商那里包含它,那么我如何包含我的原生项目 classes 就像在中包含一个模型控制器? 例如下面的代码:

$user = new App\Models\User();

autoload 在 vendor 文件夹中查找 "App" 公司(文件夹),一种方法是在 autoload 中使用一些条件,如果命名空间以 "App" 开头,则在 native 中查找 class项目,这是标准方法吗?

第二个,这个呢,vendor里面有一个package,vendor name里面的company name是"App",完整的方法是什么?

最好的解决方案是在 composer.json 文件中设置 PSR-4 自动加载,如下例所示:

// Part of composer.json
"autoload" : {
    "psr-4" : {
        "App\" : "app/"
    }
}

现在您不需要额外的自动加载,Composer 自动加载会为您完成。 当请求的 class 在 App 命名空间下时,Composer 在上面的 composer.json 文件中设置的 app 文件夹中查找它。