Skip to content

Latest commit

 

History

History
124 lines (87 loc) · 5.05 KB

yii-1-1-16-is-released.md

File metadata and controls

124 lines (87 loc) · 5.05 KB

我们很高兴地宣布 Yii Framework 版本 1.1.16 发布了。 您可以从 yiiframework.com/download/ 下载。

在此版本中,我们有包括了 120 多个改进和 bug 修复。对于这一版本中的完整更新列表,请参阅更新日志。 注意:此版本包含的变化,破坏向后的兼容性。请阅读升级说明了解如何升级。

我们想对所有花宝贵的时间帮助改善 Yii 使它能够发布的贡献者表达我们的感谢。

请注意 Yii 1.1 目前正在保持模式,这意味着它今后不会在引进新功能。目前我们正在积极开发和维护新一代PHP框架利用最新技术的 Yii 2.0。你可以遵循 Yii 2 的开发过程主要看 Yii 2.0 GitHub 的项目。你可以加入 Yii Twitter 组或者加入 Yii Facebook 组来联系其它 Yii 开发者。

下面我们将介绍一些此版本中主要的增强功能。

数据库和 ActiveRecord

在 Yii 中 Database 的支持也在不断发展。这一次我们官方已经增加了对 MariaDB 和 CUBRID 两种数据库的支持。

ODBC 现在可以通过 pdo_odbc 连接像以下这样使用:

'components'=>array(
    ......
    'db'=>array(
        'class'=>'CDbConnection'
        'driverName'=>'mysql',
        'connectionString'=>'odbc:Driver={MySQL};Server=127.0.0.1;Database=test',
        'username'=>'',
        'password'=>'',
    ),
),

当定义 STAT 关系时你可以使用 scopes:

public function scopes()
{
    return array(
        'recentPostCount'=>array(self::STAT,'Post','author_id','scopes'=>'recentScope'),
    );
}

One can specify post-JOIN operations (i.e. use|force|ignore index()) in relational queries like the following:

$users=User::model()->findAll(array(
    'select'=>'t.id,t.name',
    'with'=>array(
        'posts'=>array(
            'alias'=>'p',
            'select'=>'p.id,p.title',
            'joinOptions'=>'USE INDEX(post__user)',
        ),
    ),
));

它的详细描述在 "Relational Active Record" 指南的 "Post-JOIN operations" 部分中。

CDbCommand::naturalLeftJoin() 和 CDbCommand::naturalRightJoin() 允许被添加到对应的连接语句命令中。

现在可以使用primarykey()重写方法模型 PK,即使表定义了一个。

文件

CFileHelper 有了新的方法:

createDirectory() - 创建目录递归权限设置。 getExtensionByMimeType() - 决定文件扩展名是基于MIME类型的。 Mime-Type detection itself was improved by using the mime.types file from Apache HTTP project.

CFileHelper::removeDirectory() now properly works with symlinked directories. It could be turned off by specifying traverseSymlinks as false in options array.

CFileHelper::findFiles() 有了新的选项命名 absolutePaths。Method returns absolute paths if the option is set to true or relative ones otherwise. 默认值为 true。

CFileCache got cachePathMode and cacheFileMode properties that could be used to chmod() these.

升级

我们框架使用的多个库已经更新:

jQuery to 1.11.1. jQuery UI to 1.11.2. Multifile plugin used by CMultiFileUpload to 1.48. HTMLPurifier to 4.6.0. i18n data bundled with the framework to CLDR23.1 http://cldr.unicode.org/index/downloads/cldr-23-1. This adds new locales and has many fixes and additional data for existing ones.

HTML5

当我们第一次发布 Yii 1.1 XHTML 的时候。Now it's HTML5 so we've decided to update default application template generated by yiic webapp to use HTML5.

CHtml 和 CActiveForm 得到 HTML5 的支持如颜色,日期,本地时间,星期和搜索。

兼容性

各种第三方库工具和库经常与 Yii 使用的进行了更新,这样框架更新后就能支持这些。

CApcCache 现已与 APCu 兼容。 Yii::import() and Yii::createComponent() 现在可以使用第三方自动加载例如 Composer。 Yii and YiiBase 将被添加到 composer.json 自动加载项中。 PHPUnit 3.8+ 现在可以使用。

请求

Request now properly reacts when there's X-HTTP-Method-Override header used to emulate various request types via POST.

有三个方法 getIsPatchRequest(), getIsPatchViaPostRequest() 和 getPatch() 允许其与 HTTP PATCH requests 结合工作。

框架现在请求时的响应是通过HTTP协议版本。

Request::getPreferredLanguage() is now able to select a best matching between supported and requested languages.

错误处理

错误处理有了一些改进。

现在您可以通过 ErrorHandler::getException() 的 exception 对象。这允许有效地传递给各种第三方的 APIs。 Syslog log route is now available out of the box. 如果你想注册一个不存在的包 CClientScript 将抛出异常。 CActiveForm::$clientOptions got errorCallback so you can hook to clientside validation process using it.

其它

  • Web services 增加了对 SOAP headers 和 document/literal 编码的支持。
  • CJSON 现在可以使用 JsonSerializable 接口当序列化对象时。
  • CHtml::beginForm() 现在支持额外的 HTTP 方法,通过一个隐藏的 _method field。
  • CPasswordHelper::generateSalt() now returns salt with $2y$ cost.
  • CFormatter 现在能够格式化 DateTime 实例。