如何在 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
文件夹中查找它。
如何在 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
文件夹中查找它。