CakePHP 2.3.7 & 2.4.0-beta 发布

CakePHP 核心团队很高兴地宣布 CakePHP 2.3.7 & 2.4.0-beta 立即可用。2.3.7 是 2.3 分支的错误修复版本,而 2.4.0-beta 是 2.4 分支的第一个版本

CakePHP 核心团队很高兴地宣布 CakePHP 2.3.7 & 2.4.0-beta[1] 立即可用。2.3.7 是 2.3 分支的错误修复版本,而 2.4.0-beta 是 2.4 分支的第一个版本。以下是 2.3.7 中的更改简要列表

  • 缓存视图现在包含其 Content-Type 标头。建议您在升级时刷新视图缓存。
  • Return-Path 现在被排除在通过 SMTP 传递的电子邮件之外。
  • 保存记录时自动创建和修改时间现在一致。以前存在一个边缘情况,它们可能相差一秒。
  • 已删除围绕 IIS_SERVER 常量的未记录、未测试的功能。
  • FormHelper::dateTime() 现在在创建最大年份早于当前年份的输入时选择正确的年份。
  • 电子邮件视图现在在渲染过程的后期计算边界,从而修复了视图回调可以追加内联图像或附件,导致边界标记不正确的问题。
  • AuthComponent 现在在应用程序基本路径与控制器名称匹配时正确生成重定向 URL。
  • 从包含“index.php”的请求生成的错误现在可以正确渲染。
  • 现在拒绝包含“..”的类名。

此版本中存在一个安全修复程序,修复了在某些情况下可以加载应用程序外部控制器的漏洞。对于接受上传的 PHP 文件并且使用用户数据来确定最终文件名的应用程序来说,这是一个重要的升级。在这种情况下,攻击者可以上传 PHP 文件并远程执行代码。非常感谢 Adrian Ulrich 与我们联系并提供此问题的重现步骤。

2.4.0-beta

2.4.0-beta 版本包含几个新功能,可提高 CakePHP 的性能、安全性和易用性。完成后,此新版本旨在取代 2.3.x 分支。手册[2]中提供了一个迁移指南,如果您要从旧版本升级,我们建议您阅读它。

以下是您在 2.4.0 中可以期待的新功能和更改的当前列表

控制台

  • 记录的通知消息现在将在支持颜色的终端中变色。

SchemaShell

  • cake schema generate 现在支持 –exclude 参数。

BakeShell

  • cake bake model 现在支持烘焙 $behaviors。在您的表中找到 lftrghtparent_id 字段,它将添加 Tree 行为,例如。您还可以扩展 ModelTask 以支持您自己的行为以被识别。

FixtureTask

  • cake bake fixture 现在支持 –schema 参数,允许使用非交互式“all”烘焙所有夹具,同时使用模式导入。

对象

  • Object::log() 添加了 $scope 参数。

组件

AuthComponent

  • AuthComponent 现在在使用 BasicDigest 身份验证器时支持适当的无状态模式。可以通过将 AuthComponent::$sessionKey 设置为 false 来阻止会话启动。现在,在仅使用 BasicDigest 时,您将不再被重定向到登录页面。有关更多信息,请查看 AuthComponent 页面。
  • 属性 AuthComponent::$authError 可以设置为布尔值 false 以抑制显示闪存消息。

PasswordHasher

  • 身份验证对象现在使用新的密码哈希器对象来生成和检查密码哈希。

模型

  • Model::save()Model::saveField()Model::saveAll()、` Model::saveAssociated()`、Model::saveMany() 现在接受一个新的 ` counterCache` 选项。您可以将其设置为 false 以避免更新特定保存操作的计数器缓存值。
  • 添加了 Model::clear()

数据源

  • Mysql、Postgres 和 SQLserver 现在在连接定义中支持“settings”数组。创建连接时,此键 => 值对将作为 SET 命令发出。

视图

JsonView

  • JSONP 支持已添加到 :php:class: JsonView

HtmlHelper

  • HtmlHelper::css() 的 API 已更改。
  • HtmlHelper::link() 中添加了新选项 escapeTitle 以控制仅链接标题的转义,而不是属性。

TextHelper

  • 添加了 TextHelper::autoParagraph()。它允许自动将文本转换为 HTML 段落。

PaginatorHelper

  • 添加了 PaginatorHelper::param()

网络

CakeRequest

  • 添加了 CakeRequest::param()
  • CakeRequest::is() 已修改为支持类型的数组,如果请求匹配任何类型,则将返回 true。
  • 添加了 CakeRequest::isAll() 来检查请求是否与所有给定的类型匹配。

CakeEmail

  • 记录的电子邮件消息现在默认具有 email 范围。如果您在日志中没有看到电子邮件内容,请确保将 email 范围添加到您的日志记录配置中。

HttpSocket

  • 添加了 HttpSocket::patch()

L10n

  • ell 现在是希腊语的默认语言环境,如 ISO 639-3 所规定,而 gre 是其别名。语言环境文件夹必须相应地调整(从 /Locale/gre//Locale/ell/)。
  • fas 现在是波斯语的默认语言环境,如 ISO 639-3 所规定,而 per 是其别名。语言环境文件夹必须相应地调整(从 /Locale/per//Locale/fas/)。
  • sme 现在是萨米语的默认语言环境,如 ISO 639-3 所规定,而 smi 是其别名。语言环境文件夹必须相应地调整(从 /Locale/smi//Locale/sme/)。
  • mkd 替换 mk 作为马其顿语的默认语言环境,如 ISO 639-3 所规定。相应的语言环境文件夹也需要调整。
  • 目录代码 in 已被 id(印度尼西亚语)取代,e 已被 el(希腊语)取代,n 已被 nl(荷兰语)取代,p 已被 pl(波兰语)取代,sz 已被 se(萨米语)取代。
  • 哈萨克语已添加,kaz 作为语言环境,kk 作为目录代码。
  • 格陵兰语已添加,kal 作为语言环境,kl 作为目录代码。

日志记录

  • 日志引擎在它们的设置配置中不再需要后缀 Log。因此,对于 FileLog 引擎,现在只需定义 ‘engine’=>’File’ 即可。这统一了引擎在配置中的命名方式(例如,参见缓存引擎)。注意:如果您有像 DatabaseLogger 这样的日志引擎,它没有遵循使用 Log 后缀的约定,则必须调整您的类名以使之成为 ` DatabaseLog`。您还应该避免像 SomeLogLog 这样的类名,这些类名在末尾包含两次后缀。

FileLog

  • FileLog 引擎添加了两个新的配置选项 sizerotate

SyslogLog

  • 添加了新的日志记录引擎 SyslogLog 以将消息流式传输到 syslog。

实用程序

  • pr 在 cli 模式下运行时不再输出 HTML。

验证

  • Validation::date() 现在支持 yym 格式。
  • 加拿大的 Validation::phone() 国家代码已从 can 更改为 ca,以根据 ISO 3166(两位字母代码)统一验证方法的国家代码。

CakeNumber

  • 添加了 AUDCADJPY 货币。
  • GBPEUR 的符号现在是 UTF-8。如果您升级非 UTF-8 应用程序,请确保在使用这些货币之前使用适当的 HTML 实体符号(£€)更新静态 $_currencies 属性。

CakeTime

  • 添加了 CakeTime::isPast()CakeTime::isFuture()

Xml

  • 添加了新选项 prettyXml::fromArray() 以返回格式良好的 Xml。

错误

ErrorHandler

  • 添加了新的配置选项 skipLog,以允许跳过某些异常类型以进行日志记录。 Configure::write(‘Exc eption.skipLog’,array(‘NotFoundException’,’ForbiddenException’)); 将在 ` ‘Exception.log’` 配置为 true 时跳过记录这些异常及其扩展异常

路由

Router

  • 添加了 Router::baseUrl()。此方法替换 ` FULL_BASE_URL`。现在已弃用。

API 文档[3]和手册已更新以反映 2.4.0 的更改和更新。

非常感谢所有参与者,无论是通过提交、票证、文档编辑还是以其他方式为框架做出贡献的人。没有你,就没有 CakePHP。下载打包版本[4]。