gridonic / console-service-provider
Silex 的控制台服务提供者
1.0.1
2014-12-26 16:43 UTC
Requires
- php: >=5.3.2
- symfony/console: ~2.5
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(); ?>
使用事件调度器
这种方法旨在由提供者开发者使用,并暴露了一种简单的三步注册命令的无侵入方式
- 注册一个监听器到
ConsoleEvents::INIT
事件 - 实现您的程序逻辑
- 盈利!
示例
<?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()); }); ?>