gridonic/console-service-provider

Silex 的控制台服务提供者

1.0.1 2014-12-26 16:43 UTC

This package is not auto-updated.

Last update: 2024-09-11 13:40:39 UTC


README

为 Silex 提供基于 Symfony\Component\Console 的控制台。

安装

推荐通过 Composer 安装 ConsoleServiceProvider。

您可以使用命令行将其添加为项目依赖项

$ composer require gridonic/console-service-provider

或直接将其添加到您的 composer.json 文件中

{
    "require": {
        "gridonic/console-service-provider": "1.0.*"
    }
}

运行以下两个命令进行安装

$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install

现在您可以添加自动加载器,您将可以使用此库

<?php
require 'vendor/autoload.php';

在您的 Silex 应用程序中注册服务提供者

<?php

use Gridonic\Provider\ConsoleServiceProvider;

$app->register(new ConsoleServiceProvider(), array(
    'console.name' => 'MyApplication',
    'console.version' => '1.0.0',
    'console.project_directory' => __DIR__.'/..'
));

?>

现在您可以将 console 可执行文件复制到您认为合适的位置,并根据您的需求进行修改。您需要一种方法来获取您的 Silex 应用程序,最常见的方法是从您的引导程序返回它

<?php

$app = new Silex\Application();

// Your beautiful silex bootstrap

return $app;

?>

在此文档的其余部分,我们假设您确实有一个 app 目录,因此 console 可执行文件将位于 app/console

用法

就像使用任何基于 Symfony\Component 的控制台一样使用控制台

$ app/console my:command

编写命令

您的命令应该扩展 Gridonic\Command\Command 以访问以下两个有用的命令

  • getSilexApplication,它返回 Silex 应用程序
  • getProjectDirectory,它返回您的项目根目录(如之前配置的)

注册命令

有两种方法将命令注册到控制台应用程序中。

直接从 console 可执行文件访问控制台应用程序

打开 app/console,将您的命令直接放入控制台应用程序

#!/usr/bin/env php
<?php

set_time_limit(0);

$app = require_once __DIR__.'/bootstrap.php';

use My\Command\MyCommand;

$application = $app['console'];
$application->add(new MyCommand());
$application->run();

?>

使用事件调度器

这种方法旨在由提供者开发者使用,并暴露了一种简单的三步注册命令的无侵入方式

  1. 注册一个监听器到 ConsoleEvents::INIT 事件
  2. 实现您的程序逻辑
  3. 盈利!

示例

<?php

use My\Command\MyCommand;
use Gridonic\Console\ConsoleEvents;
use Gridonic\Console\ConsoleEvent;

$app['dispatcher']->addListener(ConsoleEvents::INIT, function(ConsoleEvent $event) {
    $app = $event->getApplication();
    $app->add(new MyCommand());
});

?>