Php 通过Composer vs spl_autoload_寄存器使用PSR4自动加载

Php 通过Composer vs spl_autoload_寄存器使用PSR4自动加载,php,composer-php,psr-4,Php,Composer Php,Psr 4,我们正在构建一个新的Slim应用程序,我们希望在代码中使用PSR4自动加载名称空间 我们通过Composer找到了两种方法,即: "autoload": { "psr-4": { "App\\Controller\\": "app/controllers", "App\\Middleware\\": "app/middleware", "App\\Model\\": "app/models" } }, 或通过spl\u自

我们正在构建一个新的Slim应用程序,我们希望在代码中使用PSR4自动加载名称空间

我们通过Composer找到了两种方法,即:

"autoload": {
    "psr-4": {
        "App\\Controller\\": "app/controllers",
        "App\\Middleware\\": "app/middleware",
        "App\\Model\\": "app/models"     
    }
},
或通过
spl\u自动加载\u寄存器
,即:

spl_autoload_register(function ($class_name) {

  $filename = __DIR__ . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $class_name) . '.php';
  require $filename;

});

什么决定了我们应该使用哪种方法?

带有
spl\u autoload\u register
的版本可能更快,因为它直接适合您。但是,因为您使用Composer自动加载从属决策,所以您的版本可能与Composer实现一样快,甚至更慢

有一个原则叫做“不要重复你自己”,所以为什么要做一些新的东西,而作曲家的人已经考虑并实施了它

也就是说,Composer还在内部使用
spl\u autoload\u寄存器


结论:使用Composer psr-4 autoload,它可能比您的实现更健壮,而且性能也更快。

使用Composer将更加健壮,并允许您导入软件包。如果您不使用
Composer
,您做错了。@localheinz我们使用composer来维护我们的供应商库,请帮自己一个忙,只需使用
composer
的自动加载功能即可。