Yii3 相比与 Yii2 做了哪些改动?

作者: php 发布时间: 2019-08-08 浏览: 4436 次 编辑

2018年6月10日发布了Yii框架3.0.0 更新的第一个alfa版本

Yii 3.0中的新功能

  • 包 “ezyang/htmlpurifier” 已经成为可选项,默认情况下不会安装
  • 移除 Yii 自动加载器以支持 Composer 的 PSR-4 实现
  • 删除了特定于 HHVM 的代码
  • 在 ApcCache 中删除了 APC 支持, APCu 像以前一样工作
  • 当覆盖默认值时,会更改yii\grid\DataColumn :: $filterInputOptions的行为
  • 将屏蔽的输入字段小部件移动到单独的扩展https://github.com/yiisoft/yii2-maskedinput
  • 邮件消息组成提取到单独的类,yii\mail\Composer,可以通过yii\mail\BaseMailer :: $composer获得设置
  • yii\base\InvalidParamException重命名为yii\base\InvalidArgumentException
  • 更新了未安装 intl 扩展时使用的后备日期格式,以匹配最新 ICU 版本的默认值
  • 删除了 XCache 和 Zend 数据缓存支持作为缓存后端
  • 更新了yii\widgets\ActiveField :: hint()方法签名以匹配label()
  • 删除了yii\base\Object :: className(),支持本机PHP语法:: class,它不会触发自动加载
  • PHP的最低要求版本现在为7.1
  • 所有框架小部件中run()方法的一致行为。现在返回结果以获得更好的可扩展性
  • yii\web\RequestParserInterface :: parse()的签名已更改为接受yii\web\Requestinstance作为唯一参数
  • 删除了 CUBRID 数据库支持
  • 删除了 PJAX 支持
  • 包 'captcha','jquery','rest','mssql' 和 'oracle' 已被提取到扩展中
  • 删除了在 2.0.x 中标记为已弃用的方法

Yii 3.0中的增强功能

  • 使用random_int()而不是mt_rand()来生成加密安全的伪随机整数
  • 对象yii\helpers\ReplaceArrayValueyii\helpers\UnsetArrayValue现在支持在使用var_export()函数导出后恢复
  • 添加了yii\web\AssetConverter::$isOutdatedCallback,允许自定义检查过时的资产转换结果
  • yii\serialize\* 命名空间下添加了序列化抽象层
  • 增加了对 PSR-3 'Logger' 支持
  • 优化了yii\filters\AccessController处理访问规则
  • $checkAjax参数添加到方法yii\web\Controller::redirect(),该方法控制 AJAX 和 PJAX 请求中的重定向
  • 邮件视图呈现封装到yii\mail\Template类中,允许隔离呈现并通过视图内的$this-> context->message访问 yii\mail\MessageInterface 实例
  • CAPTCHA渲染逻辑被提取到yii\captcha\DriverInterface中,该实例可通过 yii\captcha\CaptchaAction::$driver 字段获得
  • yii\web\Request :: getBodyParams() 在无效或缺失 'Content-Type' 头时,生成 415 “Unsupported Media Type” 错误
  • yii\web\Request :: getBodyParams() 的结果现在包括上传的文件
  • 已上载的文件检索方法已从 yii\http\UploadedFile 移至 yii\web\Request
  • 添加了对 PSR-7 HTTP Message 的支持
  • 根据 PSR-16 “Simple Cache” 规范重构的缓存实现

相对与 Yii2 改动

Yii3这个版本改动相对于Yii2是非常的巨大,包括以下特性:

  • Yii3需要PHP的最低版本是 7.1 并且 HHVM 不再被支持.
  • Yii3 将采用新的版本规则,即 semver since 3.0规则.
  • 不再使用Subtree-split 模式.
  • 放弃使用 Yii自己的 autoloader 改为用 Composer 的autoloader.
  • 框架的结构也进行了大量的调整,分出来好几个包,包括下面这些:
    • yiisoft/yii-core - 这个是Yii Framework .
    • Yii 2.0 的开发还是在 yiisoft/yii2 仓库. Yii2 只支持Bug 和安全补丁,新特性和加强的特性不在被接收。
    • yiisoft/di - PSR-11适应依赖注入的 container.
    • yiisoft/log - PSR-3 适应 Psr-3的 logging library.
    • yiisoft/cache - PSR-16 适应 psr-16的 caching library.
    • yiisoft/db - 数据库的 abstraction and QueryBuilder.
    • yiisoft/db-mysql - MySQL 的db扩展.
    • yiisoft/db-pgsql - PostgreSQL 的db扩展.
    • yiisoft/db-sqlite - SQLite 的db扩展.
    • yiisoft/db-mssql - MSSQL 的db扩展.
    • yiisoft/db-oracle - Oracle 的db扩展.
    • yiisoft/active-record - ActiveRecord 库.
    • yiisoft/rbac - RBAC 库.
    • yiisoft/view - 视图渲染库.
    • yiisoft/yii-web - Web 扩展.
    • yiisoft/yii-rest - REST API 扩展.
    • yiisoft/yii-console - console 扩展.
    • yiisoft/yii-jquery - JQuery 扩展.
    • yiisoft/yii-bootstrap3 - Bootstrap 3 扩展.
    • yiisoft/yii-bootstrap4 - Bootstrap 4 扩展.
    • yiisoft/yii-dataview - data displaying 扩展.
    • yiisoft/yii-masked-input - Masked input field widget.
    • yiisoft/yii-captcha - CAPTCHA 扩展.
  • 更多的 PSR 兼容: PSR-3, PSR-11, PSR-16
  • 框架核心只需要虚拟PSR实现包,您可以自由选择日志记录器和缓存实现。
  • 更多PSR实现的兼容性预计将在稍后实现。
  • 从Application and Module 删除ServiceLocator ,采用 container来替代.
  • 数据库的扩展被分到几个composer包里面.
  • 删除PJAX 的支持.
  • yiisoft/yii2-composer 这个包不再被使用.
  • 不再提供高级的项目模板. 项目模板也有所变化
    • yiisoft/yii-project-template - 工程模板;
    • yiisoft/yii-base-web - web的基础应用模板.

我们将为您提供Yii框架中所有最新更改的最新信息。