Yii 2.0.8 发布了
我们很高兴地宣布 Yii Framework 2.0.8 版本发布了。请参考说明 http://www.yiiframework.com/download/ 安装或升级到此版本。
2.0.8 版本是 Yii 2.0 的一个补丁发布,它包含了我们 64 位开发者的 300 次代码提交,对 150 个文件进行了修改,其中包含 100 多个小的新功能和 bug 的修复。
为了升级到新的版本,需要做一些额外的工作,请参阅 UPGRADE.md 文件。
感谢我们的 Yii 社区,社区给我们提供了很多有价值的 pull requests 和 discussions。没有你就没有本次发布!
你可以通过 starring 或者 watching Yii 2.0 GitHub 项目来跟进 Yii 2 的开发进度。你也可以通过 Yii Twitter feeds 或者加入 Yii Facebook group 来联系其他的 Yii 开发成员。论坛中也有关于本次发布的新闻帖子。
下面我们总结了一些本次发布中的重要功能/修复。关于这个版本更新的完整列表,请参阅 CHANGELOG
PHP 7 兼容 ¶
Yii 2.0.8 对于 PHP 7 有几个兼容性的补丁。一个是关于全局性的错误处理,另一个是关于 JSON 错误处理。可能大家都了解,PHP 7 在今年内会变得越来越普及,因为新的 Ubuntu LTS 版本已经包含了它。我们正在为这些即将到来的改变做准备。
数据库和 ActiveRecord ¶
我们终于在 Yii 2 中见到了我们熟知的 Yii 1.1 的函数式编程。在 Yii 1.1 中,函数式编程体现在对 GridView 列的一些过滤操作符中。现在你可以使用 yii\db\Query::andFilterCompare()
方法来对你的 GridView 添加过滤操作符。目前还没有关于这部分的文档,contributions welcome!
一个新的 event 被添加到 ActiveRecord。现在,当一个记录被更新完毕的时候 ActiveRecord 会触发一个 EVENT_AFTER_REFRESH 事件。
Schema 和迁移 ¶
在本次发布中,感谢我们的社区,在这个版本中我们得到了一系列关于数据库 Schema Builder 的增强。Schema Builder 通常用于数据库迁移,或者仅仅是为了别的原因修改数据库的结构。
首先,我们现在可以在数据表或者列中添加注释。在数据库迁移中,关于列的定义类似代码如下:
'title' => $this->string()->notNull()->comment('Hello, I am the title!')
,
如果使用分开的方法的话代码如下:
$this->addCommentOnTable('user', 'This is a table comment.');
$this->addCommentOnColumn('user', 'name', 'This is a column comment.');
$this->dropCommentFromColumn('user', 'name');
$this->dropCommentFromTable('user');
接下来,你可以为你新添加的列指定位置:
$this->string()->notNull()->first();
$this->string()->notNull()->after('anotherColumn');
Unsigned primary keys are now easy to define via `$this->primaryKey()->unsigned()`.
./yii migrate/create
命令同样得到了一些增强。这个命令现在有了一个新的 useTablePrefix
选项,如果设置为 true
将导致生成的代码使用表前缀。
现在 支持使用 --fields (参数) 生成外键:
yii migrate/create create_post --fields="author_id:integer:notNull:foreignKey(user),category_id:integer:defaultValue(1):foreignKey,title:string,body:text"
表单和验证 ¶
你试过在实现文件上传的时候忘记设置合适的编码方式吗?现在 Yii 帮你完成了这些。如果你需要文件输入操作, Yii 对表单会自动生成必要的编码方式。
新版本中,指定验证规则的时候,你可以包含一个属性用来验证,如果你不希望将这个属性设置为安全属性用于块赋值,你可以在这个属性的前面添加一个感叹号(!)。
新版本中,在使用 FileValidator
的时候,你可以通过 wildcards
来指定 mimeTypes 。举个例子, image/*
可以匹配所有以 image/
开头的 mimetypes (例如 image/jpeg
image/png
)。
新的 DateValidator
将对时间值提供全功能的验证支持。这在以往的版本也是支持的,但是会有一些限制。现在你可以将 DateValidator
的 $type
属性设置为 TYPE_DATETIME
或者 TYPE_TIME
来开启时间的验证或者是完成国际化。
安全 ¶
感谢 Tom Worster 的研究和研究之后的讨论,安全组件得到了一些增强:
- It now avoids reading more bytes than needed from /dev/urandom and /dev/random.
- 在 FreeBSD 中建议使用
/dev/random
而不是/dev/urandom
。 - 生成随机数的性能得到了增强。 这些都不是很严重的问题,所以没必要为了这个着急从 2.0.7 升级。
另外的一个引人注目的地方是 Security
组件得到了覆盖性更广的测试,这些测试在不同的环境下进行。
命令行 ¶
为已经存在的命令添加了一些可选参数,现在命令行控制器可以接受参数短语。例如,在创建数据库迁移的时候,你可以使用如下命令:
./yii migrate/create -p=@app/modules/somemodule/migrations -t=module_migrations new_migration
代替
./yii migrate/create
--migrationPath=@app/modules/somemodule/migrations --migrationTable=module_migrations new_migration
你也可以在你的命令行控制器中覆盖 yii\console\Controller::optionAliases()
方法并指定命令短语。
为配置中的闭包进行依赖注入 ¶
在配置中的使用闭包所产生的依赖现在会被自动注入:
'components' => [
'pheanstalk' => function(yii\web\User $user) {
$result = new \Pheanstalk\Pheanstalk('localhost');
$result->watch($user->getId());
return $result;
},
// ...
基于 PostgreSQL 的互斥锁 ¶
现在有了 PostgreSQL 的互斥锁驱动,所以如果你在使用 PostgreSQL,你就可以有更多的选项来处理锁的问题。
高级应用 ¶
高级应用现在可以让你使用 vagrant 来安装一个独立的开发环境。详细信息请参阅文档。
新闻归档
热门标签
- yii3
- 扩展
- 发布
- yii2
- debug
- auth client
- view
- bootstrap
- release
- html
- redis
- apidoc
- Yii 2.0
- Yii 1.1
- mongodb
- mailer
- extensions
- twig
- gii
- queue
- runner
- http 客户端
- console
- validation
- cache
- sphinx
- widget
- hydrator
- translator
- symfonymailer
- db
- http
- log
- error handler
- config
- swiftmailer
- 图书
- imagine
- assets
- i18n
- IDE
- swagger
- elasticsearch
- router
- csrf
- smarty
- definitions
- logging
- fastroute
- user