如果你想在 Laravel 中使用包,你只需在 Composer.json 文件中添加一行即可完成工作。这是因为该包在 packagist.org 中可用,如果您要使用的包是非 Composer Laravel 包怎么办?可能在 git 存储库或私人存储库等上可用。
在这篇文章中,我们将了解如何在 Laravel 项目中安装和使用非 Composer Laravel 包和自定义库。
使用 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 依赖项一样对待,并将像魔术一样将包放在供应商目录中。
使用私有存储库
正如您对 GitHub 存储库所做的那样,您可以对私有存储库执行相同的操作,如下所示:
{
"require": {
"likegeeks/my-repo": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:likegeeks/my-repo.git"
}
]
}
这里唯一的区别是您需要为 git 客户端安装 SSH 密钥。
许多 git 客户端都支持这种技术,例如:
使用 Subversion
如果您使用 Subversion,它没有分支和标签的原生概念,因此 Composer 会假设代码位于
$url/tags
.
如果您的存储库具有不同的结构,您可以像这样更改这些值:
{
"repositories": [
{
"type": "vcs",
"url": "http://svn.website.com/projectA/",
"trunk-path": "MyTrunk",
"branches-path": "MyBranches",
"tags-path": "MyTags"
}
]
}
自动加载自定义类或库
现在您可以在项目中使用非 Composer Laravel 包。
如果你的包甚至不在存储库中,可能是一个包含类的普通 PHP 库,或者如何在你的 Laravel 项目中使用它,该怎么办?
嗯,就是这么简单。首先,创建一个用于存储库的目录,例如 app/libraries。
然后将库文件包含在自动加载部分的类映射下的composer.json文件中,如下所示:
{
"autoload": {
"classmap": [
"app/libraries/myLib.php"
]
}
}
这将毫无问题地包括您的文件,如果您的库有很多文件怎么办?
太好了,您可以包含目录名称,Composer 将自动加载所有类。
现在您可以导入和使用任何非 Composer Laravel 包。
我希望您觉得这篇文章有用。继续回来。
谢谢。