elbakerino / console
基于 GetOpt.php 的 PHP 控制台,具有依赖注入和注解功能
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
使用依赖注入和注解构建 PHP 控制台应用程序。
使用 composer 安装应用程序骨架和依赖项
composer create-project elbakerino/console
就这样 - 准备编码吧!
运行演示命令
# 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
对于 Docker,下载仓库并启动服务
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
命令设置
在 _commands.php 演示中,使用内联文档注册了 GetOpt-PHP 命令。
在这里,也为找到的注解注册了命令。
对于仅手动命令,它非常简洁
<?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]) };
您可以使用注解注册命令,如演示命令 (待:注解命令文档)。
请参阅 Commands\Demo 以获取示例 class
命令处理程序,任何 callable
/resolvable
都可以作为命令处理程序。
请参阅 Commands\DemoMultiple 以获取使用方法级别注解而不是类级别注解的示例 class
命令处理程序。
定义命令的示例使用
php cli <name> <..operand> <..-a=opt>
更多详细信息
在 launch.php 中完成整个设置和自动配置,请参阅内联注释以获取详细信息。
在 _definitions.php 中,您可以定义/覆盖 PHP-DI 的服务定义。
请参阅 Lib\ConsoleApp 以执行 GetOpt,将其用作切换到另一个控制台框架的基类。
请参阅 Annotations 以获取示例注解,有关注解的更多文档将在以下库链接中提供。
在 docker-compose.yml 中配置 Docker。只需更改 PHP 版本、镜像基础和在 Dockerfile 中添加其他 PHP 扩展即可。使用 docker-compose up --build
重建镜像。当更改 docker-opcache.ini 或 docker-vhost.conf 时,需要重新构建。
有关更多详细信息,请参阅
- GetOpt-PHP 命令
- PHP-DI
- Orbiter\AnnotationsUtil
- 使用 Doctrine\Annotations
- doctrine 设置辅助工具
- 带有缓存的反射
- 带有缓存静态代码分析器,例如通过目录获取类名(用于自动配置)
从packagist安装您项目所需的任何其他依赖项。
待办事项
实际上不需要更多,您可以编写简单高效的控制台应用程序。
一些有用的功能包括
- 打印行,打印成功,打印错误辅助函数
- 彩色打印辅助函数
- 输入处理辅助函数
- 命令周围的某些中间件管道
- 时间和性能中间件
- 默认使用PSR logger(monolog)进行日志记录
下载
- 见Composer Package。
- 仓库
git clone https://github.com/elbakerino/console-di-annotations.git
许可
本项目是免费软件,在MIT许可证下分发。
见:LICENSE。
贡献者
通过将您的代码提交到代码仓库,您同意在仓库附带的MIT许可证下发布代码。