自动加载自定义类或者库
现在你可以在你的项目中使用你的非 Composer Laravel 包。
如果你的包甚至不在一个 repo 上,可能是一个包含类的普通 PHP 库,或者如何在你的 Laravel 项目中使用它呢?
首先,创建一个用于存储库的目录,比如 app/libraries。
然后将库文件包含在自动加载部分的类映射下的 composer.json 文件中,如下所示:
{ "autoload": { "classmap": [ "app/libraries/myLib.php" ] } }
这将包括文件没有问题,如果库有很多文件怎么办?
太好了,我们可以改为包含目录名称,Composer 将自动加载所有类。
现在你可以导入和使用任何非 Composer Laravel 包。
使用私有仓库
正如我们对 GitHub 存储库所做的那样,我们可以像这样对私有存储库执行相同的操作:
{ "require": { "onitroad/my-repo": "dev-master" }, "repositories": [ { "type": "vcs", "url": "jack@onitroad:onitroad/my-repo.git" } ] }
这里唯一的区别是我们需要为 git 客户端安装 SSH 密钥。
使用Subversion
如果你使用 Subversion,它没有分支和标签的原生想法,所以 Composer 会假设代码在
$url/tags
如果 repo 具有不同的结构,我们可以像这样更改这些值:
{ "repositories": [ { "type": "vcs", "url": "http://svn.website.com/projectA/", "trunk-path": "MyTrunk", "branches-path": "MyBranches", "tags-path": "MyTags" } ] }
使用 Git 包
为此,我在 GitHub 上搜索了一个在 packagist.org 上没有的包,并找到了一个。
我将使用来自 wesleytodd 的名为 UniversalForms 的包。
你可以在这里找到它 https://github.com/wesleytodd/Universal-Forms-PHP
要使用该包,请打开 composer.json 文件并将其添加到 require 部分,如下所示:
"wesleytodd/universal-forms" : "dev-master"
然后在 require 部分下,添加一个名为 repositories 的新部分,如下所示:
"repositories": [ { "type": "vcs", "url": "https://github.com/wesleytodd/Universal-Forms-PHP" } ]
最后,运行
composer update
现在我们可以像任何其他 composer 包一样为包添加服务提供者。
打开 config/app.php 并将提供者添加到提供者的数组中。
'Wesleytodd\UniversalForms\Drivers\Laravel\UniversalFormsServiceProvider',
我们可以像使用任何其他包一样使用该包。
这个技巧的最佳之处在于,存储库将被视为任何 Composer 依赖项,并将像魔术一样将包放在供应商目录中。