composer+psr-4实现自动加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了composer+psr-4实现自动加载相关的知识,希望对你有一定的参考价值。

自动加载

对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。

require ‘vendor/autoload.php‘;

这使得你可以很容易的使用第三方代码。例如:如果你的项目依赖 monolog,你就可以像这样开始使用这个类库,并且他们将被自动加载。

$log = new MonologLogger(‘name‘);
$log->pushHandler(new MonologHandlerStreamHandler(‘app.log‘, MonologLogger::WARNING));

$log->addWarning(‘Foo‘);

你可以在 composer.json 的 autoload 字段中增加自己的 autoloader。

{
    "autoload": {
        "psr-4": {"Acme\": "src/"}
    }
}

Composer 将注册一个 PSR-4 autoloader 到 Acme 命名空间

你可以 定义一个从命名空间到目录的映射 。此时 src 会在你项目的根目录,与 vendor 文件夹同级。例如 src/Foo.php 文件应该包含 AcmeFoo 类。

添加 autoload 字段后,你应该再次运行 install 命令来生成 vendor/autoload.php 文件。

引用这个文件也将返回 autoloader 的实例,你可以将包含调用的返回值存储在变量中,并添加更多的命名空间。这对于在一个测试套件中自动加载类文件是非常有用的,例如。

$loader = require ‘vendor/autoload.php‘;
$loader->add(‘AcmeTest‘, DIR);

除了 PSR-4 自动加载,classmap 也是支持的。这允许类被自动加载,即使不符合 PSR-0 规范。详细请查看 自动

以上是关于composer+psr-4实现自动加载的主要内容,如果未能解决你的问题,请参考以下文章

Composer 的自动加载机制

使用 Composer 自动加载 PSR-4

Composer psr-4 自动加载问题

使用PSR-4配合composer autoload 自动加载文件夹

PSR-4 自动加载如何在 composer 中为自定义库工作?

composer的autoload来自动加载自己编写的函数库与类库?