joseki / console

简单地将 Symfony Console 集成到 Nette 框架中

v0.2.2 2015-12-17 07:34 UTC

This package is auto-updated.

Last update: 2024-09-05 21:19:05 UTC


README

Build Status Latest Stable Version

需求

Joseki/Console 需要 PHP 5.4 或更高版本。

安装

使用 Composer 安装 Joseki/Console 是最佳方式

$ composer require joseki/console

配置

  • 创建文件,例如 app/console,并添加以下内容
#!/usr/bin/env php
<?php
/** @var Nette\DI\Container $container */
$container = require __DIR__ . '/bootstrap.php';
$application = $container->getService('Console.cli');
$application->run();
  • 在您的 config.neon 中注册编译器扩展
extensions:
  Console: Joseki\Console\DI\ConsoleExtension
  • 完成

使用方法

您可以通过在 config.neon 中将控制台命令添加为服务,并使用 joseki.console.command 标签

services:
  - class: Your\Own\Command
    tags: ['joseki.console.command']

或者直接在控制台编译器扩展下注册它

Console:
  commands:
    - Your\Own\Command

运行控制台命令

app/console yourCommandName

命令太多?命令名太长(包括命名空间)?

将命令根据它们的命名空间分成单独的控制台脚本。将您的cron脚本与数据库生成器、迁移或其他命令组分开。只需注册控制台别名和您命令组的命名空间前缀,如下所示

Console:
  console:
    cron: 'myapp:crons'       # accepts only commands from 'myapp:crons' namespace, eg. 'myapp:crons:emails'

然后创建一个新的控制台文件 bin/cron

#!/usr/bin/env php
<?php
/** @var Nette\DI\Container $container */
$container = require __DIR__ . '/bootstrap.php';
$application = $container->getService('Console.console.cron');
$application->run();

并且仅使用后缀名运行您的命令。与旧方法比较

app/console myapp:crons:emails

与新建方法

app/cron emails