webman框架源码修改及性能优化(一)

kaoson

看了webman框架性能介绍,有点垂涎,于是着手体验一下,但有些地方与自己的架构思维不太符合,还发现了一些性能问题,在此分享如何修改和优化。

如何修改框架源码?

直接去修改源文件的代码这种方式不可取,因为官方升级后不好同步,也不好对比文件修改了什么地方,所以最好的方式是利用composer加载方式,重新创建一个目录,把源码文件复制到新建目录里进行修改,最后利用自己创建的autoload加载文件,具体流程如下:

  1. 在项目根目录创建override/webman目录,把要修改的文件复制到该目录下,例如修改vendor/workerman/webman-framework/src/App.php,复制后的文件路径是override/webman/App.php,然后进行修改。

  2. 在override目录创建autoload.php,用于覆盖文件的加载,autoload.php内容如下:

spl_autoload_register(function($class) {
    $map = [
        'Webman'         => __DIR__ . '/webman',
        'support'        => __DIR__ . '/webman/support',
        'Alipay\EasySDK' => __DIR__ . '/alipay'
    ];

    $classFile = '';
    foreach ($map as $namespace => $dir) {
        if (0 === strpos($class, $namespace)) {
            $ns = substr($class, strlen($namespace) + 1);
            $ns = str_replace('\\', DIRECTORY_SEPARATOR, $ns);
            $file = "{$dir}/{$ns}.php";
            if (is_file($file)) {
                $classFile = $file;
                break;
            }
        }
    }

    if ($classFile) {
        include $classFile;
    }

}, true, true);
  1. 修改composer.json文件,在autoload...files结点加入"./override/autoload.php":
"autoload": {
    "psr-4": {
      "": "./",
      "app\\": "./app",
      "App\\": "./app",
      "app\\View\\Components\\": "./app/view/components"
    },
    "files": [
      "./support/helpers.php",
      "./override/autoload.php"
    ]
  },
  1. 执行composer dump-autoload命令
$ composer  dump-autoload

通过以上步骤,就可以丝滑地载入要覆盖的文件了。

1240 1 0
1个评论

kaoson

520
积分
0
获赞数
0
粉丝数
2023-05-30 加入
×
🔝