simplette/console

This package is abandoned and no longer maintained. The author suggests using the contributte/console package instead.

Simple bridge for Nette Framework and 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 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.

This library was inspired by Symfony Console implementation by Kbyby and Joseki.

Requirements

This library requires PHP 5.6 or higher. Simplette Console library is designed for Nette Framework version 2.4 and higher.

Installation

The best way to install this library is using Composer:

$ 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.

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.

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.

<?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.

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.

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:

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:

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:

$ 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.

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.

See also other libraries and some older work if you are looking for inspiration.