CakePHP 2.1.0 正式发布

查看这个流行的 PHP 框架的最新版本。包含令人惊喜的更新!

CakePHP 核心团队非常高兴地宣布 CakePHP 2.1.0 稳定版即刻发布。正如之前版本中提到的,这个版本与 2.0.6 完全向后兼容,让您轻松地更新应用程序,开始利用这个版本中的众多改进。我们不会发布任何 2.0.x 分支的最新版本,任何未来的错误修复将直接在 2.1 分支中完成。

自上一个候选版本发布以来,总共有 90 多个提交,并在此最终版本中添加了一些小的增强功能。变更日志页面 [2] 中列出了所有变更。以下是 2.1 版本的亮点。

内容类型视图

CakePHP 中添加了两个新的视图类。新的 JsonViewXmlView 让您更轻松地生成 XML 和 JSON 视图。

扩展视图

View 类中添加了一个新方法,允许您用另一个文件包装或“扩展”视图/元素/布局。

Plugin.view

现在,所有布局/视图/元素名称可以使用 Plugin.view 来表示应该使用插件视图。 View::element()plugin 选项已弃用。

改进的错误

现在, debug() 函数输出更简洁,更易读。我们还在异常页面中添加了交互式堆栈跟踪。

通用事件系统

已经构建了一个新的通用事件系统,它取代了回调的调度方式。您可以随意调度自己的事件并将回调附加到它们。

测试

可以在 $test 以外的数据源中创建 fixtures。

添加了一个新的 TestShell。它减少了运行单元测试所需的输入,并提供了一个基于文件路径的 UI

::
Console/cake test app/Model/Post.php Console/cake test app/Controller/PostsController.php

回调优先级

现在,助手、行为和组件的回调支持优先级,这有助于更轻松地控制回调触发的顺序。

ThemeView 已弃用

我们已经将所有 ThemeView 功能合并到 View 类中。更轻松的主题支持!

改进的 HTTP 缓存

CakeResponse 类中添加了几个新方法,用于微调 HTTP 缓存的选项。 RequestHandlerComponent 现在如果检测到客户端有资源的缓存版本,就会停止视图渲染过程。

大多数助手转换为实用程序库

我们现在已经将一些助手重构为库,例如 CakeTimeCakeNumber。导入其中一个库就像 App::uses(‘String’, ‘Utility’) 一样简单,并且可以使用如下方式使用它 String::truncate($text);

深度保存

saveAll 及其朋友(saveManysaveAssociatedvalidateAssociated ...)现在接受一个新的 deep 选项参数。例如,您可以在一个调用中保存 Author、Posts 和相关评论。您还可以将 fieldList 选项设置为这些方法,以提供一组允许保存的字段。

新的 ACL 引擎

除了传统的数据库 ACL 引擎之外,我们还添加了一个基于配置文件的新引擎。对于那些希望在不需要数据库来动态管理权限的情况下获得快速权限检查系统的人来说,这是一个很好的数据库解决方案的替代方案。

HtmlHelper::media()

HtmlHelper 获得了一个新的 media() 方法,用于生成支持多个备用源的与 HTML5 兼容的音频和视频标签。

其他改进和更改

  • 由于 PHP 错误 #44251 和 #45748,已将最低 PHP 版本要求更新为 5.2.8。
  • Paginator 助手现在接受一个选项来设置“当前”页面链接的默认类。
  • 扩展不存在的视图将抛出异常。
  • 现在可以使用绝对路径(相对于 View 文件夹)扩展视图。
  • Cake 核心中的大多数视图文件,例如 home.ctp 和默认布局,已移到 app 文件夹中。
  • 使用预处理语句时,数据库日志中现在会显示查询参数。
  • 事务命令(BEGIN、COMMIT、ROLLBACK)现在显示在数据库日志中。
  • 添加了 Set::nest()Set::get()。前者用于使用数组键作为参考从普通数组中创建一个嵌套数组。 Set::get() 用于使用点表示法访问任何数组值。
  • 添加了 Router::defaultRouteClass() 来获取/设置默认路由类。这使得设置全局默认值变得容易,这对 slug 路由或 i18n 有用。
  • I18n::translate() 现在接受一个新的 $language 参数。它现在还公开了用于读取 .po 文件的方法,这对自定义翻译接口很有用。
  • 验证对象现在可以接收一个“recursive”选项来限制用于查找用户的查询中返回的数据。
  • <!–nocache–> 标记现在可以在元素中正确工作。
  • FormHelper 现在从安全字段哈希中省略禁用字段。这使得使用 SecurityComponent 和禁用输入变得更容易。
  • 与单选按钮一起使用时, between 选项的行为有所不同。现在, between 值被放置在图例和第一个输入元素之间。
  • 带有复选框输入的 hiddenField 选项现在可以设置为特定值,例如“N”,而不仅仅是 0。
  • 日期 + 时间输入的 for 属性现在反映了第一个生成的输入。这可能会导致生成的日期时间输入的 for 属性发生变化。
  • 使用 Media 视图设置 extension 变量现在是可选的。如果没有提供,它将从 id(即文件名)中提取。

我们为您保留了一个令人惊喜的更新,就是为 CakePHP 域名添加了一个新网站。这个新的插件存储库网站 [4] 旨在成为所有使用 CakePHP 完成的扩展、插件和应用程序的单一参考和搜索起点。请访问 https://plugins.cakephp.com.cn 查看。

此外,我们对 CakePHP 主页 [4] 和在线手册 [5] 进行了重大改版,它们除了其他酷炫功能之外,还具有流体布局,可以适应更小的屏幕尺寸,例如您的手机或平板电脑。我们仍在努力让其他网站匹配我们的新外观。

对于那些希望简化 CakePHP 应用程序部署过程的人来说,我们已经为框架创建了新的 PEAR 频道 [6]。这将帮助您及时了解新的安全修复和最新增强功能。只需访问网站并按照说明操作!

与往常一样,感谢友好的 CakePHP 社区提供补丁、文档更改和新的问题报告。没有你们,就没有 CakePHP!

  • 下载打包版本 [1]
  • 查看变更日志 [2]