# 从炸毛框架 V1 升级

这里只写明可能在升级过程中会影响原先代码执行的部分,不包含新增的特性等。

# 需要改变命名空间的类

  • Framework\Console -> ZM\Console\Console
  • Swlib\Util\SingletonTrait -> ZM\Utils\SingletonTrait
  • ZM\Annotation\Http\Before -> ZM\Annotation\Http\HandleBefore
  • ZM\Annotation\Http\After -> ZM\Annotation\Http\HandleAfter
  • @SwooleEventAt -> @OnSwooleEvent
  • 删除 @SwooleEventAfter
  • 删除 ModBase
  • @HandleEvent -> @SwooleHandler
  • ZM\Utils\ZMRobot -> \ZM\API\ZMRobot

# 方法名称变更

  • ZM\Console::stackTrace() -> ZM\Console::trace()

# 注解的变化

@OnSwooleEvent(原 @SwooleEventAt)中,rule 参数不再是自定义语法的东西了(比如之前的 connectType:qq 之类的鸡肋语法),直接是可执行的 PHP 代码,比如 3 == 4connectIsQQ() 之类的。

去除 @CQAPISend,因为目前没什么意义。

@CQCommand 中,regexMatch 变成 patternfullMatch 变成 regex,消除歧义(第一个是 * 号匹配符进行匹配的,第二个是标准的正则表达式匹配)。同时新增 start_withend_withkeyword 平行选项。

@OnTick 注解新增第二个参数 worker_id,其中默认是 0,代表只在 #0 号工作进程上运行计时器。

# 中间件编写的改变

原先的 Middleware 是需要含有 getName() 方法才合法,现在不需要了,但是对 @MiddlewareClass 注解需要增加参数,也就是说原先 getName() 返回的名称现在需要写到 @MiddlewareClass("xxx") 这样的形式。

# ZMBuf 的变化

由于 2.0 框架使用了多进程模型,所以不能使用原先适用于单进程下全局变量的方式(ZMBuf)进行存取变量,所以 ZMBuf 下的所有方法都需要更改,其中 get, set 等对缓存操作的模型请根据 2.0 的文档变更使用 Redis 或内置的多进程共享内存可用的 LightCache 轻量缓存。

而获取全局配置文件,如 global.php 文件,也发生了变化,新框架引入了 ZMConfig 对象,可以快速地区分各类环境变量从而读取不同的配置文件。比如我们获取原先的 global 配置文件中的一项:ZMBuf::globals("port"),在 2.0 中需要使用 ZMConfig::get("global", "port") 方式。以此类推,ZMBuf::config("xxx") 也直接变为 ZMConfig::get("xxx") 了。