easyswoole - 基于swoole扩展实现的一款高性能php框架

自定義命令

EasySwoole 默認自帶有 5 個命令,如下所示:

php easyswoole.php crontab  對定時任務進行管理
php easyswoole.php install  安裝(需要在./vendor/easyswoole/easyswoole/bin/easyswoole 文件中調用)
php easyswoole.php phpunit  執行單元測試 
php easyswoole.php process  對自定義進程進行管理
php easyswoole.php server   啟動、停止、重啟服務等
php easyswoole.php task     查看 task 任務的運行狀態

默認命令詳細內容可查看 基礎管理命令

舊版本(3.4.x 之前版本)框架自定義命令的實現可查看 自定義命令 3.3.x

定義命令

通過實現 \EasySwoole\EasySwoole\Command\CommandInterface 接口,用戶可自定義命令:

該接口定義的方法如下:

<?php

namespace EasySwoole\Command\AbstractInterface;

interface CommandInterface
{
    public function commandName(): string;

    public function exec(): ?string;

    public function help(CommandHelpInterface $commandHelp): CommandHelpInterface;

    public function desc(): string;
}

自定義命令使用示例

實現自定義命令接口(AbstractInterface)

新建文件 App/Command/Test.php,內容如下:

<?php

namespace App\Command;

use EasySwoole\Command\AbstractInterface\CommandHelpInterface;
use EasySwoole\Command\AbstractInterface\CommandInterface;
use EasySwoole\Command\CommandManager;
use EasySwoole\EasySwoole\Command\Utility;

class Test implements CommandInterface
{
    // 設置命令名稱
    public function commandName(): string
    {
        return 'test';
    }

    // 處理執行命令的邏輯
    public function exec(): ?string
    {
        // 獲取用戶輸入的命令參數
        $argv = CommandManager::getInstance()->getOriginArgv();

        if (count($argv) < 3) {
            echo "please input the action param!" . PHP_EOL;
            return null;
        }

        // remove test
        array_shift($argv);

        // 獲取 action 參數
        $action = $argv[1];

        // 下面就是對 自定義命令 的一些處理邏輯
        if (!$action) {
            echo "please input the action param!" . PHP_EOL;
            return null;
        }

        // 獲取 option 參數
        $optionArr = $argv[2] ?? [];

        switch ($action) {
            case 'echo_string':
                if ($optionArr) {
                    $strValue = explode('=', $optionArr);
                    echo $strValue[1] . PHP_EOL;
                } else {
                    echo 'this is test!' . PHP_EOL;
                }
                break;
            case 'echo_date':
                if ($optionArr) {
                    $strValue = explode('=', $optionArr);
                    echo "now is " . date('Y-m-d H:i:s') . ' ' . $strValue[1] . '!' . PHP_EOL;
                } else {
                    echo "now is " . date('Y-m-d H:i:s') . '!' . PHP_EOL;
                }
                break;
            case 'echo_logo':
                echo Utility::easySwooleLog();
                break;
            default:
                echo "the action {$action} is not existed!" . PHP_EOL;
        }
        return null;
    }

    public function help(CommandHelpInterface $commandHelp): CommandHelpInterface
    {
        // 添加 自定義action(action 名稱及描述)
        $commandHelp->addAction('echo_string', 'print the string');
        $commandHelp->addAction('echo_date', 'print the date');
        $commandHelp->addAction('echo_logo', 'print the logo');
        // 添加 自定義action 可選參數
        $commandHelp->addActionOpt('--str=str_value', 'the string to be printed ');
        return $commandHelp;
    }

    // 設置自定義命令描述
    public function desc(): string
    {
        return 'this is test command!';
    }
}

注冊自定義命令

bootstrap 事件 中注冊自定義命令。

修改項目根目錄的 bootstrap.php 文件,添加如下內容實現注冊自定義命令:

<?php
//全局bootstrap事件
date_default_timezone_set('Asia/Shanghai');

# 【可選:調用 `initialize` 事件進行初始化】
// EasySwoole\EasySwoole\Core::getInstance()->initialize();

\EasySwoole\Command\CommandManager::getInstance()->addCommand(new \App\Command\Test());

注意:如果用戶需要獲取配置文件的配置,需要先執行 initialize 事件,調用 EasySwoole\EasySwoole\Core::getInstance()->initialize(); 進行初始化。

bootstrap 事件3.2.5 新增的事件,它允許用戶在框架初始化之前執行自定義事件。

執行命令結果

$ php easyswoole.php test
please input the action param!

$ php easyswoole.php test -h
This is test command!
Usage:
  easyswoole test ACTION [--opts ...]
Actions:
  echo_string  print the string
  echo_date    print the date
  echo_logo    print the logo
Options:
  --str=str_value  the string to be printed 

$ php easyswoole.php test echo_string
this is test!

$ php easyswoole.php test echo_date
now is 2021-02-23 19:23:19!

$ php easyswoole.php test echo_logo
  ______                          _____                              _
 |  ____|                        / ____|                            | |
 | |__      __ _   ___   _   _  | (___   __      __   ___     ___   | |   ___
 |  __|    / _` | / __| | | | |  \___ \  \ \ /\ / /  / _ \   / _ \  | |  / _ \
 | |____  | (_| | \__ \ | |_| |  ____) |  \ V  V /  | (_) | | (_) | | | |  __/
 |______|  \__,_| |___/  \__, | |_____/    \_/\_/    \___/   \___/  |_|  \___|
                          __/ |
                         |___/

$ php easyswoole.php test echo_string --str="hello easyswoole"
hello easyswoole
主站蜘蛛池模板: 天津高压泵-高压清洗机-高压柱塞泵-厂家-价格-天津高压泵格瑞德 天津翻译公司盖章|022-58385822| 翰文博译(天津)商务咨询有限公司 | 冷却特性测试仪_ 刀柄热胀仪_加油小车价格_皮带张力仪_上海川奇机电设备有限公司 | 十堰急开锁0719-8888139|十堰开锁公司|十堰开锁电话|十堰换锁价格-同福锁城-十堰同福锁城 | 铝压铸件_铝合金压铸件_铝合金压铸件厂家-安平县长虹压铸厂 | 酒类灌装机厂家_贴标机_灌装生产线-青州市锦德包装机械有限公司 酒店设计_建筑设计_室内装修装饰-北极点酒店设计公司 | 惠州清洁公司|惠州保洁公司|惠州清洁|惠州保洁|惠州清洁服务|惠州保洁服务|壹壹集团 | 久久黄色一级视频_视频一区精品自拍_理论片免费ā片在线观看_亚洲色视频在线播放网站_香港经典a毛片免费观看_亚州三级久久电影 | 华药药业集团|华药修医师|修医师浸膏|河南华药药业有限公司 | 济南晨阳科技有限公司-锅巴生产设备-夹心米果设备-膨化食品机械 集装箱零配件_不锈钢丝绳厂家_镀锌铁链条_合页非标件定制_上海英鑫多实业有限公司 | 微型直流减速电机-直流永磁电机-直流永磁电机厂家-微型直流减速电机定制-东莞市鑫辉传动科技有限公司 - 鑫辉传动科技 | 氧化镁|轻质氧化镁厂家|活性氧化镁价格【不好用免费退换】镁神股份 | 徐州车牌识别_徐州门禁一卡通_徐州人脸识别门禁-江苏琪瑞特智能科技有限公司 | 河北安润防腐管业股份有限公司-远程供液管路_远程供液_远程供液系统 | 西安防静电地板_防静电地板厂家_防静电地板价格_OA网络地板_写字楼架空地板_机房墙板安装-红梅防静电地板厂家直销 | 联系我们果博东方在线开户客服电话:19038688886 - 黑龙江旺广机械设备有限公司 | 频闪仪,便携式频闪仪厂家_灯管,频闪仪之父-杭州品拓电子技术有限公司 | 河南电梯公司_郑州电梯公司_河南家用别墅电梯厂家-郑州嘉祥机电设备公司 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 吉林省新思路教育发展有限公司 | 组合式空调机组-吊顶式新风换气机-消防高温排烟风机-德州宏楚空调设备有限公司 | 幼儿园设计公司/南昌酒店装修/办公室/餐厅/民宿/店面/展厅/装修设计公司-益昌装饰集团 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 义乌供需网-义乌外发加工来料加工,义乌采购信息供求对接平台(yiwugongxu.com) | 找刑事辩护律师_找深圳刑事律师多少钱★王平聚【清华博士/刑法教授】 | 河南反渗透设备-河南EDI超纯水设备-郑州纯净水设备-郑州友邦水处理设备有限公司 | 叶片泵,液压电机,油泵电机,变量叶片泵,油压电机-广东俊泰液压科技有限公司 | 长沙考研-长沙考研辅导学校-长沙领航教育科技有限公司 | 湖南流水线-湖南自动化设备-湖南输送设备-湘潭市友工自动化设备有限公司 | 塑料桶生产厂家-山东塑料桶-化工塑料桶-200升塑料桶-山东欣越塑料制品有限公司 | 曙海培训-仿真培训Linux培训html5培单片机培训PCB培训python培训PLC培训C语言培训android培训物联网培训无线电培训欧姆龙培训工业机器人培训5G培训Hadoop培训CFD培训项目外包开发咨询 | 上海离婚律师|婚姻律师离婚纠纷咨询解答-金牌上海离婚律师团队 | 河卵石制砂机|鹅卵石制砂机-移动制砂机-制砂设备-郑州秦星机械设备有限公司 | 烟台金润核电材料股份有限公司| 威海实木家具-威海定制家具-威海家具-威海至佳百隆家具有限公司 威海木箱,威海木托盘,威海免熏蒸包装箱-威海耀晟木制品有限公司 | 磐石在线-磐石市综合信息门户网www.pszx.com - Powered by Discuz! | 九江东盛机械制造有限公司| 河南专升本-河南省统招专升本 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 无线对讲机系统-中继台-山区隧道信号覆盖-贝亚特 | 温湿度变送器_pm2.5传感器_湿敏电阻_二氧化碳传感器_甲醛传感器-美特瑞科技 | 伸缩接头,限位伸缩接头,传力接头,可拆卸接头,橡胶接头,衬四氟橡胶接头,橡胶软连接,橡胶补偿器,防水套管- 巩义市隆盛管道设备有限公司 |