Simplette / Console
Symfony Console is probably the most common console component for PHP language.
Thank to this library, you can simply use it in Nette Framework with composer command., (*1)
This library was inspired by Symfony Console implementation by Kbyby and Joseki., (*2)
Requirements
This library requires PHP 5.6 or higher. Simplette Console library is designed
for Nette Framework version 2.4 and higher., (*3)
Installation
The best way to install this library is using Composer:, (*4)
$ composer require simplette/console
Documentation
Firstly, register extension Simplette\Console\DI\ConsoleExtension
. For more information
about configuration see the class definition. This library is meant to be simply as possible.
However, some features would be added in the future, so stay tuned., (*5)
extension:
console: Simplette\Console\DI\ConsoleExtension
This console implementation support also debugMode
and correct setting of it. For this
support, you have to call Simplette\Console\DI\BootstrapHelper::setupMode
in your
app/bootstrap.php
., (*6)
Callable is used for the web environment setting. In the console commands, the mode is
set by checking of the --debug
parameter. For compatibility, there is defined more
parameters that can turn on debug mode., (*7)
<?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');
Do not forget to call $configurator->enableTracy()
after setupMode
. This will resolve
all your problems with logging., (*8)
Console commands can be defined as is described in documentation. Every command has
to be registered in your di services and identified by tag console.command
., (*9)
services:
- class: App\Commands\TestCommand
tags: [console.command]
Name of the tag can be configured in extension. And you can even define your own console
application:, (*10)
console:
application: App\Console\MyAwesomeConsoleApplication
tag: mycommand
Best Practices
Command definition in services can be really annoying. You can simplify this step using
Nette Decorator, for more information read this awesome article. For simplifying
commands definition use this:, (*11)
decorator:
Symfony\Component\Console\Command\Command:
tags: [console.command]
inject: yes
services:
- App\Commands\MyCommand
Simplette Console has also implemented bin
command for composer
. So for run your
console command, you can simply type:, (*12)
$ composer exec console mycommad
Contributing
This is an open source, community-driven project. If you would like to contribute, please follow
the code format as used in current sources and submit a pull request., (*13)
Advanced documentation will be added in the future. But if you look on my source codes, you will understand what you
can do with this small (but powerful) library., (*14)
See also other libraries and some [older work][10] if you are looking for inspiration., (*15)