elbakerino / console
PHP Console with DI and Annotations, based on GetOpt.php
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=7.3
- orbiter/annotations-util: 0.2.x
- php-di/php-di: ^6.0.0
- psr/container: ^1.0
- ulrichsg/getopt-php: ^3.2.2
- vlucas/phpdotenv: ^3.6
Requires (Dev)
- filp/whoops: ^2.5.0
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2023-01-29 03:46:59 UTC
README
Build PHP Console applications with Dependency Injection and Annotations.
Setup app skeleton and install dependencies with composer:
composer create-project elbakerino/console
That's it - ready to code!
Run demo commands:
# get help
php cli -h
# how to access operands, see `Commands\Demo->handle`
php cli demo
php cli demo World
php cli demo:welcome
php cli demo:bye
For Docker, download repository and spin up services:
git clone https://github.com/elbakerino/console-di-annotations.git
docker-compose up
# open second terminal:
# open `bash` in docker service `app` with user `www-data`
docker-compose exec -u www-data app bash
composer install
Command Setup
At _commands.php demo GetOpt-PHP commands are registered with inline documentation.
Here also the commands are registered for found annotations.
For only manual command, it's as short as:
<?php return static function(GetOpt\GetOpt $get_opt) { // already dependency injected! $get_opt->addCommand(new GetOpt\Command('demo', [Commands\Demo::class, 'handle'])); // new GetOpt\Command(<name>, <handler>, <options>[optional]) };
You can register commands with annotations, like the demo commands (todo: annotation command docs).
See Commands\Demo for a demo class
command handler, any callable
/resolvable
is possible as command handler.
See Commands\DemoMultiple for a demo class
command handler which uses annotations at method level, not class level.
Schematic use of defined commands:
php cli <name> <..operand> <..-a=opt>
More Details
In launch.php the whole setup and auto-config is done, see inline-comments for details.
In _definitions.php you can define/overwrite service definitions for PHP-DI.
See Lib\ConsoleApp for the execution of GetOpt, use as base to switch to another console framework.
See Annotations for example annotations, further docs on annotation will follow / can be found below in the libraries links.
Configure Docker in docker-compose.yml. Simply change PHP version, image base and add other PHP extensions in Dockerfile, rebuild image with docker-compose up --build
. When changing docker-opcache.ini or docker-vhost.conf a rebuild is needed.
For further details see:
- GetOpt-PHP Commands
- PHP-DI
- Orbiter\AnnotationsUtil
- uses Doctrine\Annotations
- doctrine setup helper utility
- with cached reflections
- with caching static code analyzer for e.g. getting class names by directory (needed for auto-config)
Install any other dependency for your project from packagist.
Todos
There is not really more needed, you can write simple and efficient console apps.
Some nice to haves would be:
- print line, print success, print error helper functions
- print in color helper functions
- input handling helper functions
- some middleware pipelines around commands
- time and performance middleware
- logging with PSR logger (monolog) by default
Downloads
- See Composer Package.
- Repository
git clone https://github.com/elbakerino/console-di-annotations.git
License
This project is free software distributed under the MIT License.
See: LICENSE.
Contributors
By committing your code to the code repository you agree to release the code under the MIT License attached to the repository.
Author: Michael Becker