simplette/console

此包已被弃用,不再维护。作者建议使用 contributte/console 包。

为 Nette 框架和 Symfony Console 提供的简单桥梁。

v0.1.1 2017-02-23 19:50 UTC

This package is auto-updated.

Last update: 2021-04-09 22:51:34 UTC


README

Symfony Console 可能是 PHP 语言中最常见的控制台组件。感谢这个库,您可以使用 composer 命令在 Nette 框架 中简单地使用它。

这个库受到了 Symfony Console 实现 KbybyJoseki 的启发。

需求

此库需要 PHP 5.6 或更高版本。Simplette Console 库是为 Nette 框架 2.4 及更高版本设计的。

安装

安装此库的最佳方式是使用 Composer

$ composer require simplette/console

文档

首先,注册扩展 Simplette\Console\DI\ConsoleExtension。有关配置的更多信息,请参阅类定义。这个库旨在尽可能简单。然而,将来可能会添加一些功能,所以 请关注

extension:
    console: Simplette\Console\DI\ConsoleExtension

此控制台实现也支持 debugMode 和正确的设置。为了支持这一点,您需要在您的 app/bootstrap.php 中调用 Simplette\Console\DI\BootstrapHelper::setupMode

在 Web 环境设置中使用 Callable。在控制台命令中,模式通过检查 --debug 参数来设置。为了兼容性,还定义了更多可以打开调试模式的参数。

<?php

use Simplette\Console\DI\BootstrapHelper;

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

BootstrapHelper::setupMode($configurator, function () use ($configurator) {
//  $configurator->setDebugMode('23.75.345.200'); // enable for your remote IP
});
$configurator->enableTracy(__DIR__ . '/../log');

不要忘记在 setupMode 之后调用 $configurator->enableTracy()。这将解决您与日志记录的所有问题。

控制台命令可以按照 文档 中所述定义。每个命令都必须在您的 di 服务中注册,并使用标签 console.command 进行标识。

services:
	- class: App\Commands\TestCommand
	  tags: [console.command]

标签的名称可以在扩展中配置。您甚至可以定义自己的控制台应用程序

console:
	application: App\Console\MyAwesomeConsoleApplication
	tag: mycommand

最佳实践

在服务中定义命令可能会非常烦人。您可以使用 Nette Decorator 简化此步骤,有关更多信息,请阅读 这篇精彩的文章。为了简化命令定义,请使用此

decorator:
	Symfony\Component\Console\Command\Command:
		tags: [console.command]
		inject: yes

services:
	- App\Commands\MyCommand

Simplette Console 还实现了 bin 命令用于 composer。因此,要运行您的控制台命令,您只需键入

$ composer exec console mycommad

贡献

这是一个开源的、社区驱动的项目。如果您想贡献力量,请遵循当前源代码中使用的代码格式,并提交一个 pull request。

将来将添加更高级的文档。但如果您查看我的源代码,您将了解您可以使用这个小型(但功能强大)的库做什么。

另请参阅其他库和一些较旧的工作,如果您在寻找灵感。