# 从炸毛框架 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 == 4`,`connectIsQQ()` 之类的。 去除 `@CQAPISend`,因为目前没什么意义。 `@CQCommand` 中,`regexMatch` 变成 `pattern`,`fullMatch` 变成 `regex`,消除歧义(第一个是 * 号匹配符进行匹配的,第二个是标准的正则表达式匹配)。同时新增 `start_with`,`end_with`,`keyword` 平行选项。 `@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")` 了。