自动加载自定义类或者库

现在你可以在你的项目中使用你的非 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 密钥。

安装和使用非 Composer Laravel 包

使用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 依赖项,并将像魔术一样将包放在供应商目录中。

日期:2020-07-15 11:16:29 来源:oir作者:oir