我已经通过编写器加载了一些库,我想知道是否可以在/ vendor映射中添加我自己的库,然后让composer自动加载器加载它?结构将类似于/ vendor / mylibrary /,然后是命名空间mylibrary。
这可能吗?也可以在composer自动加载器中添加不同的地图吗?比如/ app / src /然后让它加载该文件夹中的所有类?或者我必须为此制作自己的装载机?
由于
答案 0 :(得分:8)
您甚至可以通过向composer.json添加自动加载字段将自己的代码添加到自动加载器。
{ "autoload": { "psr-0": {"Acme": "src/"} }
}
Composer将为Acme命名空间注册PSR-0自动加载器。 您可以定义从名称空间到目录的映射。 src目录将位于项目根目录中,与供应商目录位于同一级别。示例文件名是src / Acme / Foo.php,其中包含Acme \ Foo类。
添加自动加载字段后,您必须重新运行安装到 重新生成vendor / autoload.php文件。
所以基本上,你只需要follow PSR-0,并通过将这一行添加到你的composer.json
告诉作曲家在哪里找到你的库。答案 1 :(得分:2)
是的。你可以实现它。将composer.json文件配置如下:
{
"autoload": {
"classmap": [ "classes" ]
}
这里的类是您拥有所有与应用程序相关的类的目录的名称。也应该自动检测与相关的类。只需添加以下行即可同时实现两者:
require 'vendor/autoload.php';
您可以使用namesapce引用您的类,如下所示:
use classes\Model\Article;
答案 2 :(得分:1)
是的,当然可以添加自己的库,您应该非常鼓励这样做。如果您的图书馆是公开的,您只需在packagist.org注册即可。如果没有,那就有点复杂了,但并非不可能。
如果您的项目不符合PSR-0标准,作曲家将为您创建一个类图。不支持自定义自动加载器。
如果您遇到问题,我建议您阅读有关所有这些的(非常优秀的)文档,然后再回来。