civicrm/cv-lib

CiviCRM CLI工具的Bootstrap库

v0.3.55 2024-09-13 02:50 UTC

This package is auto-updated.

Last update: 2024-09-13 02:53:56 UTC


README

cv-lib 是由 cv 提供的子包。它定义了 cv 的基本核心 -- 定位和启动 CiviCRM。

此代码的标准开发地址是 civicrm/cv。它将被定期发布到只读镜像 civicrm/cv-lib,以方便其他项目的使用。

安装

composer require civicrm/cv-lib

主要API

该库提供了一些受支持的类

  • Civi\Cv\CmsBootstrap 支持标准的启动协议。在这个协议中,我们寻找一个已知的 UF/CMS,启动它,然后启动 CiviCRM。这个协议的优势是它更类似于典型的 HTTP 请求。(由 UF/CMS 和 CRM 支持的事件和插件将更正常地工作。)

    基本用法

    Civi\Cv\CmsBootstrap::singleton()->bootCms()->bootCivi();

    或者你可以传入选项

    $options = [...];
    Civi\Cv\CmsBootstrap::singleton()
      ->addOptions($options)
      ->bootCms()
      ->bootCivi();

    最终用户可以通过设置 CIVICRM_BOOT(如 cv 中所述)来微调行为。

  • Civi\Cv\Bootstrap 支持传统的启动协议。在这个协议中,我们寻找 civicrm.settings.php 并启动 CiviCRM。最后,我们使用 civicrm-core API 启动相关的 UF/CMS。

    基本用法

    $options = [...];
    \Civi\Cv\Bootstrap::singleton()->boot($options);
    \CRM_Core_Config::singleton();
    \CRM_Utils_System::loadBootStrap([], FALSE);

    最终用户可以通过设置 CIVICRM_SETTING(如 cv 中所述)来微调行为。

两种启动机制都接受一个可选的提示和覆盖集。

例如,默认情况下,cv-lib 将错误打印到 STDERR,但你可以覆盖消息的处理

// Disable all output
$options['log'] = new \Psr\Log\NullLogger();

// Enable verbose logging to STDOUT/STDERR
$options['log'] = new \Civi\Cv\Log\StderrLogger('Bootstrap', TRUE);

// Use bridge between psr/log and symfony/console
$options['log'] = new \Symfony\Component\Console\Logger\ConsoleLogger($output);

// Use the console logger from cv cli. (Requires symfony/console. Looks a bit prettier.)
public function execute(InputInterface $input, OutputInterface $output) {
  ...
  $options['output'] = $output;
  ...
}

有关 $options 的更多信息,请参阅文档块。

实验性API

还包括其他类,但它们的契约可能发生变化。

特别有趣的一个是 BootTrait。它需要 symfony/console,并且大多数 cv 子命令用它来实现常见的行为

  1. BootTrait 定义了某些 CLI 选项(如 --level--user--hostname 等)。
  2. BootTrait 自动在 Bootstrap.phpCmsBootstrap.php 之间做出选择。
  3. BootTrait 将 CLI 选项传递给 Bootstrap.phpCmsBootstrap.php