sourcebroker/deployer-loader

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

4.0.1 2022-12-28 15:32 UTC

This package is auto-updated.

Last update: 2024-08-28 18:56:52 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 sourcebroker/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 中包含 sourcebroker/deployer-loader 的 autoload.php。

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

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

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

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

加载部署任务

sourcebroker/deployer-loader 包还允许您包含单个文件或文件夹中的多个文件(递归)。

  • 加载单个文件的示例

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

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

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

变更日志

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