yii 3.0 已于2025年12月31日正式发布,生产环境可直接使用;采用psr-11容器与显式依赖注入,弃用yii::$app和静态调用,应用基于psr-15中间件,需重构入口、配置及路由。

Yii 3.0 已于 2025 年 12 月 31 日正式发布,不是“即将发布”,也不是“测试版”——当前(2026 年 4 月)生产环境可直接使用。
yii\Yii 3.0 的发布时间和版本状态确认
官方明确标注 yii\Yii 3.0 的 GA(General Availability)时间为 2025 年 12 月 31 日,发布信息在多个渠道同步公开,包括官网公告与 Packagist 元数据。注意:yii/framework 包已从 v2.x 迁移至 yiisoft/yii-core 等新命名空间,旧式 Yii::createWebApplication() 不再存在。
- 安装必须用 Composer 加载
yiisoft/yii-web或yiisoft/yii-console等组合包,而非单一yii2包 - PHP 版本最低要求为
8.1,hhvm已彻底移除支持 - 所有核心类默认启用严格类型声明,
declare(strict_types=1)是硬性前提
升级 Yii 2.x 到 3.0 需要重写入口和依赖注入配置
Yii 3.0 彻底放弃“单例全局 Yii 类”模型,Yii::$app 消失,取而代之的是 PSR-11 兼容容器 + 显式依赖注入。常见错误如 Call to undefined method Yii::createObject() 就是因为仍沿用 2.x 的静态调用习惯。
- 入口文件(如
public/index.php)需改用yiisoft/yii-web提供的ApplicationFactory -
config/web.php不再返回数组,而是返回Configurator实例或 PHP 8.1+ 原生数组+闭包组合 - 组件注册方式从
'components' => [...]改为容器定义,例如通过$container->set(CacheInterface::class, RedisCache::class)
yii\web\Application 和控制器生命周期变化明显
3.0 中 yii\web\Application 不再继承自 yii\base\Application,而是实现 psr/http-server-middleware 协议,整个请求流程走中间件栈。这意味着 beforeAction、afterAction 等钩子函数全部移除,事件系统也大幅精简。
- 权限控制、日志、响应包装等逻辑需改写为 PSR-15 中间件
- 控制器方法不再自动绑定动作 ID;
actionIndex()不会自动映射到/index,必须显式配置路由或使用属性路由(#[Route('GET /')]) -
Yii::$app->response变成只读ResponseInterface实例,不能直接赋值statusCode,须用withStatus(404)链式调用
最易被忽略的一点:3.0 默认不加载任何调试工具栏(Debug Toolbar),yiisoft/yii-debug 是独立扩展,且需手动注册中间件并配置允许 IP;没有它,你根本看不到 SQL 查询或性能火焰图——这不是 bug,是设计选择。











