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。在您的表中找到 lft、rght 和 parent_id 字段,它将添加 Tree 行为,例如。您还可以扩展 ModelTask 以支持您自己的行为以被识别。
FixtureTask
- cake bake fixture 现在支持 –schema 参数,允许使用非交互式“all”烘焙所有夹具,同时使用模式导入。
对象
- Object::log() 添加了 $scope 参数。
组件
AuthComponent
- AuthComponent 现在在使用 Basic 或 Digest 身份验证器时支持适当的无状态模式。可以通过将 AuthComponent::$sessionKey 设置为 false 来阻止会话启动。现在,在仅使用 Basic 或 Digest 时,您将不再被重定向到登录页面。有关更多信息,请查看 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 引擎添加了两个新的配置选项 size 和 rotate。
SyslogLog
- 添加了新的日志记录引擎 SyslogLog 以将消息流式传输到 syslog。
实用程序
- pr 在 cli 模式下运行时不再输出 HTML。
验证
- Validation::date() 现在支持 y 和 ym 格式。
- 加拿大的 Validation::phone() 国家代码已从 can 更改为 ca,以根据 ISO 3166(两位字母代码)统一验证方法的国家代码。
CakeNumber
- 添加了 AUD、CAD 和 JPY 货币。
- GBP 和 EUR 的符号现在是 UTF-8。如果您升级非 UTF-8 应用程序,请确保在使用这些货币之前使用适当的 HTML 实体符号(£ 和 €)更新静态 $_currencies 属性。
CakeTime
- 添加了 CakeTime::isPast() 和 CakeTime::isFuture()。
Xml
- 添加了新选项 pretty 到 Xml::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]。