8

我已经通过作曲家加载了一些库,我想知道是否可以在 /vendor 映射中添加我自己的库,然后让作曲家自动加载器加载它?该结构类似于 /vendor/mylibrary/,然后是命名空间 mylibrary。

这可能吗?也可以向作曲家自动加载器添加不同的地图吗?例如 /app/src/ 然后让它加载该文件夹中的所有类?还是我必须为此制作自己的装载机?

谢谢

4

3 回答 3

8

阅读作曲家文档

您甚至可以通过将自动加载字段添加到 composer.json 来将您自己的代码添加到自动加载器。

{
    "autoload": {
        "psr-0": {"Acme": "src/"}
    }

}

Composer 将为 Acme 命名空间注册一个 PSR-0 自动加载器。您定义从命名空间到目录的映射。src 目录将位于您的项目根目录中,与供应商目录处于同一级别。一个示例文件名是包含 Acme\Foo 类的 src/Acme/Foo.php。

添加 autoload 字段后,您必须重新运行 install 以重新生成 vendor/autoload.php 文件。

所以基本上,您只需要遵循 PSR-0,并通过将该行添加到您的 composer.json 来告诉作曲家在哪里可以找到您的库

于 2013-03-22T16:23:31.787 回答
2

是的。你可以实现它。如下配置您的 composer.json 文件:

{
    "autoload": {
        "classmap": [ "classes" ]
}

这里的 classes 是您拥有所有与应用程序相关的类的目录的名称。与供应商相关的类也应该被自动检测到。只需添加以下行即可同时实现两者:

require 'vendor/autoload.php';

您可以使用命名空间来引用您的类,如下所示:

use classes\Model\Article; 
于 2014-02-23T01:29:04.163 回答
1

是的,当然可以添加自己的库,您应该感到非常鼓励这样做。如果您的图书馆是公开的,您只需在 packagist.org 上注册即可。如果不是,它会更复杂一些,但并非不可能。

如果您的项目不遵循 PSR-0 标准,composer 将为您创建一个类映射。不支持自定义自动加载器。

如果您遇到问题,我建议您阅读有关所有这些的(非常出色的)文档并返回。

http://getcomposer.org/doc/

于 2013-03-22T16:29:12.960 回答