easyswoole实现载入自定义配置文件夹所有配置文件的封装

2021-04-30 14:22:35 浏览数 (1)

修改easyswoole的配置类

代码语言:javascript复制
//类文件路径 //easyswoole/vendor/easyswoole/easyswoole/src/Config.php

//引入File组件
use EasySwooleUtilityFile;

//在类中定义方法
/**
     * 载入自定义配置文件夹里的所有配置文件
     * @param string $dirPath 配置文件夹
     * @param bool $merge 是否将内容合并入主配置
     * @author : lqx_chris
     */
    public function loadDir (string $dirPath, bool $merge = false)
    {
        if(is_dir($dirPath)){
            $fileList = File::scanDirectory($dirPath);
            foreach ($fileList['files'] as $filePath){
                $this->loadFile($filePath,$merge);
            }
        }
    }

创建自己的配置目录

例:在 cache.php 和 database.php 配置文件中,我们简单写一些东西

代码语言:javascript复制
//cache.php
return [
  'REDIS'=>'redis',
];
//database.php
return [
  'MYSQL' => [
        'host'          => '127.0.0.1',
        'port'          => '3306',
        'user'          => 'root',
        'timeout'       => '5',
        'charset'       => 'utf8mb4',
        'password'      => '123456',
        'database'      => 'easyswoole',
    ],
];

在 EasySwooleEvent.php 的 initialize 事件中载入配置

代码语言:javascript复制
<?php
namespace EasySwooleEasySwoole;


use EasySwooleEasySwooleSwooleEventRegister;
use EasySwooleEasySwooleAbstractInterfaceEvent;
use EasySwooleHttpRequest;
use EasySwooleHttpResponse;
use EasySwooleORMDbConfig as ORMConfig;
use EasySwooleORMDbManager;
use EasySwooleORMDbConnection;

class EasySwooleEvent implements Event
{

    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
        //载入配置文件夹文件
        Config::getInstance()->loadDir(EASYSWOOLE_ROOT . '/Config', true);
        //配置ORM
        $config = new ORMConfig(Config::getInstance()->getConf("MYSQL"));
        //注册ORM连接池
        DbManager::getInstance()->addConnection(new Connection($config));
    }

    public static function onRequest(Request $request, Response $response): bool
    {
        // TODO: Implement onRequest() method.
        // 请求进来时输出一下配置信息,看看是否成功
        var_dump(Config::getInstance()->getConf());
        return true;
    }
}
代码语言:javascript复制
//启动
$ php easyswoole start
//请求Easyswoole
localhost:9501
//输出信息中,除了主配置,我们可以看到我们自己文件夹的配置也合并载入了
  ["MYSQL"]=>
  array(7) {
    ["host"]=>
    string(9) "127.0.0.1"
    ["port"]=>
    string(4) "3306"
    ["user"]=>
    string(4) "root"
    ["timeout"]=>
    string(1) "5"
    ["charset"]=>
    string(7) "utf8mb4"
    ["password"]=>
    string(5) "12345"
    ["database"]=>
    string(6) "easyswoole"
  }
  ["REDIS"]=>
  string(5) "redis"

已经更新此封装到 EasySwoole 3.4x的版本中,使用3.4x版本的同学可以直接使用啦~~~~

0 人点赞