仓库地址尝试EasySwoole自定义命令创建文件Installer\Script::安装设置可选包Whatisyourcomponentname(hyperf/demo):hyperf-cloud/easyswoole-commandWhatisyourcomponentlicense(MIT):Whatisyourcomponentdescription:HyperfCommandforEasySwooleWhatisyournamespace(HyperfCloud\EasyswooleCommand):Removinginstallerdevelopmentdependencies是否要使用hyperf/framework组件?[1]是[n]以上都不是进行选择或键入composer包名称和版本(n):你想使用hyperf/di组件吗?[1]是[n]以上都不是进行选择或键入composer包名称和版本(n):...并给组件添加"hyperf/command":"1.1.*"依赖。下面修改根目录composer.json{"require":{"easyswoole/easyswoole":"3.x","hyperf-cloud/easyswoole-command":"dev-master"},"require-dev":{"swoft/swoole-ide-helper":"^4.2","friendsofphp/php-cs-fixer":"^2.14","mockery/mockery":"^1.0","phpstan/phpstan":"^0.11.2"},"autoload":{"psr-4":{"App\\":"App/"}},"minimum-stability":"dev","prefer-stable":true,"config":{"sort-packages":true},"scripts":{"test":"co-phpunit-cphpunit.xml--colors=always","cs-fix":"php-cs-fixerfix$1","analyse":"phpstananalyze--memory-limit300M-l0-cphpstan.neon./App"},"repositories":{"hyperf":{"type":"path","url":"./hyperf"},"packagist":{"type":"composer","url":"https://mirrors.aliyun.com/composer"}}}接管命令界面让我我们创建一个EasySwooleCommand来接管所有的CommandInterfacecommandName());$this->command=$command;}publicfunctionconfigure(){$this->addOption('args','a',InputOption::VALUE_IS_ARRAY|InputOption::VALUE_OPTIONAL,'EasySwoole输入参',[]);}publicfunctionhandle(){$args=$this->input->getOption('args');if(in_array('produce',$args)){Core::getInstance()->setIsDev(false);}Core::getInstance()->initialize();$result=$this->command->exec($args);$this->output->success($result);}}添加Application初始化CommandContainer中的所有CommandgetCommandList();foreach($listas$name){$this->commands[]=newEasySwooleCommand($container->get($name));}}publicfunctionadd(Command$command){$this->commands[]=$command;}publicfunctionrun(){$application=newSymfonyApplication();foreach($this->commandsas$command){$application->add($command);}返回$application->run();}}最后改造入口函数run();执行命令demo:command$phphyperf.phpdemo:commandstring(11)"HelloWorld"[OK]成功启动Server$phphyperf.phpstart-aproduce创建HyperfCommand接下来我们创建一个HyperfCommand看看效果set(newDemoCommand());Application::getInstance()->add(newDemo2Command());执行结果$phphyperf.phpdemo:command2string(21)"HelloHyperfCommand."写在最后Hyperf是一个基于Swoole4.4+的高性能、高灵活性的PHP协程框架。内置协程服务器和大量常用组件,性能相比传统的基于PHP-FPM的框架有了质的提升,在提供超高性能的同时,还保持着极其灵活的可扩展性。标准组件基于PSR标准实现。基于强大的依赖注入设计,确保大多数组件或类是可替换和可重用的。.框架组件库除了常见的协程版MySQL客户端和Redis客户端,还为大家准备了协程版EloquentORM、WebSocket服务端和客户端、JSONRPC服务端和客户端、GRPC服务端和客户端Client、Zipkin/Jaeger(OpenTracing)客户端、GuzzleHTTP客户端、Elasticsearch客户端、Consul客户端、ETCD客户端、AMQP组件、Apollo配置中心、阿里云ACM应用配置管理、ETCD配置中心、基于令牌桶的算法限流器、通用连接池、熔断器、Swagger文档generation、SwooleTracker、Blade和Smarty视图引擎、Snowflake全局ID生成器等组件省去你实现对应协程版本的麻烦。Hyperf还提供了基于PSR-11的依赖注入容器、注解、AOP面向方面编程、基于PSR-15的中间件、自定义流程、基于PSR-14的事件管理器、Redis/RabbitMQ消息队列和自动模型缓存、PSR-16位缓存、Crontab秒级定时任务、Translation国际化、Validation验证器等非常便捷的功能,满足丰富的技术和业务场景,开箱即用。
