# Easy_Swoole **Repository Path**: wjopenice/Easy_Swoole ## Basic Information - **Project Name**: Easy_Swoole - **Description**: Easy_Swoole全家桶 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-26 - **Last Updated**: 2021-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Easy_Swoole Easy_Swoole全家桶 # 环境要求 * 保证 PHP 版本大于等于 7.1 * 保证 Swoole 拓展版本大于等于 4.4.23 * 需要 pcntl 拓展的任意版本 * 使用 Linux / FreeBSD / MacOS 这三类操作系统 * 使用 Composer 作为依赖管理工具 # 自动加载检查 ``` 打开 composer.json 文件,检查是否有注册了 App 命名空间。 { "require": { "easyswoole/easyswoole": "3.4.x", }, "autoload": { "psr-4": { "App\\": "App/" } } } ``` # 更新自动加载 ``` composer dump-autoload ``` # easyswoole安装 ``` php vendor/easyswoole/easyswoole/bin/easyswoole install ``` # 启动项目 ``` php easyswoole server start 或者 php easyswoole server start -d ``` # 停止项目 ``` php easyswoole server stop ``` # 多个swoole项目启动 ``` php easyswoole start product -d ``` # 配置操作类 * 配置操作类为 \EasySwoole\EasySwoole\Config 类,使用方式非常简单,具体请看下面的代码示例,操作类还提供了 load 方法重载全部配置,基于这个方法,可以自己定制更多的高级操作 * 设置和获取配置项都支持点语法分隔,具体请看下面获取配置的代码示例 ``` getConf('MAIN_SERVER.SETTING.task_worker_num'); // 设置配置 按层级用点号分隔 $instance->setConf('DATABASE.host', 'localhost'); // 获取全部配置 $conf = $instance->getConf(); // 用一个数组覆盖当前配置项 $conf['DATABASE'] = [ 'host' => '127.0.0.1', 'port' => 13306 ]; $instance->load($conf); ``` # DI注入配置 es3.x提供了几个Di参数配置,可自定义配置脚本错误异常处理回调,控制器命名空间,最大解析层级等 ``` set(SysConst::ERROR_HANDLER,function (){}); // 配置错误处理回调 Di::getInstance()->set(SysConst::SHUTDOWN_FUNCTION,function (){}); // 配置脚本结束回调 Di::getInstance()->set(SysConst::HTTP_CONTROLLER_NAMESPACE,'App\\HttpController\\');// 配置控制器命名空间 Di::getInstance()->set(SysConst::HTTP_CONTROLLER_MAX_DEPTH,5); // 配置http控制器最大解析层级 Di::getInstance()->set(SysConst::HTTP_EXCEPTION_HANDLER,function (){}); // 配置http控制器异常回调 Di::getInstance()->set(SysConst::HTTP_CONTROLLER_POOL_MAX_NUM,15); // http控制器对象池最大数量 ``` # 动态配置 * 当你在控制器(worker进程)中修改某一项配置时,由于进程隔离,修改的配置不会在其他进程生效,所以我们可以使用动态配置: 动态配置将配置数据存储在swoole_table中,取/修改配置数据时是从swoole_table直接操作,所有进程都可以使用 * 由于swoole_table的特性,不适合存储大量/大长度的配置,如果是存储支付秘钥,签名等大长度字符串,建议使用类常量方法定义,而不是通过dev.php存储 * 如果你非得用配置文件存储,请看本文下文的 自定义config驱动 # 自定义Config驱动 * EasySwoole在3.2.5版本后,默认配置驱动存储 从SplArray改为了swoole_table,修改配置之后,所有进程同时生效 ``` \EasySwoole\Config\AbstractConfig AbstractConfig 抽象类提供了以下几个方法,用于给其他config驱动继承 __construct(bool $isDev = true) 传入是否为开发环境的参数,根据该参数去加载dev.php或者produce.php isDev() 可通过该方法获得当前运行环境是否为开发环境 abstract function getConf($key = null); 获取一个配置 abstract function setConf($key,$val):bool ; 设置一个参数 abstract function load(array $array):bool ; 重新加载配置项 abstract function merge(array $array):bool ; 合并配置项 abstract function clear():bool ; 清除所有配置项 ``` # 自定义配置 * 在EasySwoole中,自带了SplArray和swoole_table驱动实现,可自行查看源码了解. * 默认驱动为swoole_table * 如需要修改存储驱动,步骤如下: * 继承 AbstractConfig 实现各个方法 * 在bootstrap事件事件中修改config驱动(直接在文件中加入这行代码即可) ```