digitalerase/deployer-loader

自动加载供应商和自动加载部署任务。

4.0.1.2 2023-04-12 06:29 UTC

This package is auto-updated.

Last update: 2024-09-12 09:49:15 UTC


README


http://img.shields.io/packagist/v/sourcebroker/deployer-loader.svg?style=flat https://img.shields.io/badge/license-MIT-blue.svg?style=flat

它做什么?

此软件包允许您

  1. 将项目供应商类注册到 deploy.php 中使用。请参阅 "包含类加载器" 了解更多信息,为什么您不应在 deploy.php 中包含项目 vendor/autoload.php。
  2. 加载单个任务/设置文件。
  3. 从文件夹中加载多个任务/设置文件。

安装

composer require digitalerase/deployer-loader

使用

包含类加载器

如果 Deployer 作为从全局安装或从本地 ./vendor/bin/dep(从 deployer/dist 安装)的 phar 使用,则它已经包含了它自己的 vendor/autoload.php。如果我们在 deploy.php 文件中要求从我们的项目中 vendor/autoload.php,那么这将是一个麻烦,因为我们正在将两个具有非同步依赖的自动加载组合在一起。我们添加到 deploy.php 中的第二个 composer vendor/autoload.php 具有优先级,因为 composer 使用 spl_autoload_register() 方法的 prepend 参数,该参数将自动加载器添加到自动加载队列的起始位置而不是末尾。因此,我们的项目的类将用于 Deployer phar 的类之前。

解决方案是在 deploy.php 中包含 digitalerase/deployer-loader 的 autoload.php。

使用 spl_autoload_register(),它将注册新的闭包函数以查找类,并且它将使用没有 prepend 参数的方式注册自己。因此,Deployer phar 的自动加载类将首先使用,如果它们不存在,则回退到主项目供应商的类。

如何使用它?只需在您的 deploy.php(如果有的话,请删除 vendor/autoload.php)的开头包含自动加载即可

require_once(__DIR__ . '/vendor/digitalerase/deployer-loader/autoload.php');

在代码中的此点之后,您可以使用在 composer.json 文件中声明的所有 psr4 供应商类。

加载部署任务

digitalrase/deployer-loader 软件包还允许您包含单个文件或从文件夹(递归地)包含多个文件。

  • 加载单个文件的示例

    new \SourceBroker\DeployerLoader\Load(
       [path => 'vendor/digitalerase/deployer-extended-database/deployer/db/task/db:copy.php'],
       [path => 'vendor/digitalerase/deployer-extended-database/deployer/db/task/db:move.php'],
    );
    
  • 递归加载文件夹中所有文件的示例

    new \SourceBroker\DeployerLoader\Load(
       [
         path => 'vendor/digitalerase/deployer-extended-database/deployer/db/'
         excludePattern => '/move/'
       ],
       [
         path => 'vendor/digitalerase/deployer-extended-media/deployer/media/'
       ],
    );
    

    您可以使用 preg_match "excludePattern" 排除文件。

变更日志

请参阅 https://github.com/digitalerase/deployer-loader/blob/master/CHANGELOG.rst