Nag*_*hab 5 php composer-php psr-4
我们正在构建一个新的 Slim 应用程序,并且希望在代码中使用 PSR4-Autoloading 和命名空间。
我们通过 Composer 找到了两种方法来做到这一点,即:
"autoload": {
"psr-4": {
"App\\Controller\\": "app/controllers",
"App\\Middleware\\": "app/middleware",
"App\\Model\\": "app/models"
}
},
Run Code Online (Sandbox Code Playgroud)
或者通过spl_autoload_register即:
spl_autoload_register(function ($class_name) {
$filename = __DIR__ . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $class_name) . '.php';
require $filename;
});
Run Code Online (Sandbox Code Playgroud)
是什么决定了我们应该采用哪种方法?
的版本spl_autoload_register可能会更快,因为它直接适合您。但是因为您使用 Composer 来自动加载依赖项,所以您的版本可能会与 Composer 实现一样快甚至更慢。
有一个原则叫做“不要重复自己”,既然 Composer 的人已经考虑并实施了它,那为什么还要创造新的东西呢?
话虽这么说,Composer 也在spl_autoload_register内部使用
结论:使用 Composer psr-4 自动加载,它可能比您的实现更强大,并且在性能方面同样快速。