CakePHP 2.1.2 & 2.2.0-beta 发布

CakePHP 核心团队很自豪地宣布立即发布 CakePHP 2.1.2 [1] 和 2.2.0-beta [2]。2.1.2 是 2.1.x 分支的 bugfix 版本,而 2.2.0-beta 是 2.2.x 的第一个版本。

CakePHP 核心团队很自豪地宣布立即发布 CakePHP 2.1.2 [1] 和 2.2.0-beta [2]。2.1.2 是 2.1.x 分支的 bugfix 版本,而 2.2.0-beta 是 2.2.x 的第一个版本。

CakePHP 2.1.2

2.1.2 中有一些 bug 修复,其中最值得注意的更改是

  • Set::insert() 现在会覆盖以前是字符串值的那些值。
  • AuthComponent 现在使用 loginRedirect 作为默认的重定向位置,如果会话为空。
  • CakeNumber::format() 现在在使用低于 PHP 5.4 的 PHP 时支持千位分隔符/小数点的多个字节。
  • 对 CakeSession 的更改已被恢复,以帮助解决 IE8 会话丢失的问题。
  • 修复了 SQLServer + 布尔类型列的问题。
  • DboSource::buildJoinStatement() 在表为子查询时不添加架构。
  • SessionComponent::id() 始终返回 sessionid。如果需要,它将自动启动会话。
  • 现在,仅在需要时才会对 Model 中 expression() 和 calculate() 进行方法检查。
  • 测试套件现在始终使用测试数据源。以前,如果您没有包含任何 fixture 并运行需要数据库的测试,则会使用默认连接。
  • URL 片段不再进行 url 编码。这会导致像 backbone 这样的客户端框架出现问题。
  • L10n::get() 的返回值始终返回语言。
  • 修复了 css() 和 script() 中字符串 url 的 HTML 转义。
  • 修复了 saveAll() 中使用空 hasMany 数据集时的警告。
  • Validation::decimal() 接受类似 10 和 10.0 的值。
  • FormHelper::postButton() 不再创建不可见的按钮。
  • $_FILES 数组现在被递归地重新格式化。这修复了文件输入深度嵌套时出现的问题。
  • EmailComponent 不再对包含 UTF-8 字符的地址进行双重编码。
  • File::create() 不再处理 umask。这是一个针对文件缓存的解决方法,现在已经不再需要了。

CakePHP 2.2.0-beta

紧随 2.1.0 的发布,CakePHP 团队很自豪地宣布发布 2.2.0 的 beta 版本。2.2.x 将是与 2.0.x 和 2.1.x 兼容的 API 版本。2.1.2 版本中提到的所有更改,在 2.2.0-beta 中也存在。我们决定跳过标准的 ` -dev` 和 ` -alpha` 版本,因为我们认为新功能相对稳定,并且在升级时应该大体上是透明的。以下是 2.2.0-beta 中添加的新功能的简要列表

CakeTime 实用程序的时间区域支持

  • 添加了“Config.timezone”参数来配置应用程序的全局时区。
  • CakeTime 函数现在可以使用时区字符串或 DateTimeZone 对象来设置用户偏移量。
  • 所有相关函数中的 $userOffset 参数都已替换为 $timezone 参数。
  • 为了向后兼容,仍然可以为 $timezone 参数传递数字偏移量。
  • 添加了新方法:CakeTime::toServer() 和 CakeTime::timezone()`

支持对复杂自定义查找器进行分页

Model ` findCount()` 现在将传递 ` $query[‘operation’]=’count’` 以获得更大的灵活性。

在许多情况下,自定义查找已经为分页返回了正确的计数,但 ‘operation’ 键允许更大的灵活性来构建其他查询,或者删除自定义查找器本身所需的联接。由于自定义查找方法的分页从未很好地工作过,因此需要在模型级别进行变通方法,现在这些变通方法不再需要了。

ACL 方法现在是 Permission 模型的一部分

现在,Permission 模型可使用 AclComponent 中公开的所有方法,以便在模型层更容易地进行权限检查。

新的 Hash 类

添加了一个新的实用程序库 ` Hash`。它旨在作为 Set 类的替代品,具有改进的性能和更一致的 API。所有内部对 Set 的调用都被替换,Set 已被弃用,将在下一个主要版本中删除。

还添加了 Set::expand() 和 Hash::expand() 来将点分隔键的普通列表转换为嵌套数组。

辅助程序延迟加载

位于应用程序文件夹中的辅助程序现在可以延迟加载,如果您不依赖它们触发任何回调,并且它们位于应用程序文件夹中,则不再需要在 ` $helpers` 控制器属性中声明辅助程序。

Redis 缓存引擎

添加了一个新的缓存引擎来与 Redis 服务器交互,它与 Memcache 类似。

缓存组

现在可以将缓存键标记或分组。这简化了与同一标签关联的大量缓存条目的大规模删除。在创建缓存引擎时,会在配置时间声明组。

致命错误 & 控制台错误处理程序

现在您可以为控制台和致命错误配置单独的错误处理程序。如果您没有定义这些配置,则将使用默认值。如果您使用的是自定义错误处理程序,它现在除了其他类型之外,还将接收致命错误代码。

嵌套事务支持

Dbo 数据源现在支持真正的嵌套事务。如果您需要在应用程序中使用此功能,请使用 ` ConnectionMana ger::getDataSource(‘default’)->useNestedTransactions=true;` 启用它。

调度程序过滤器

现在可以将事件监听器附加到调度程序调用,这些监听器将能够在请求信息或响应发送到客户端之前更改它们。` app/Config/bootstrap.php` 应该被更改以添加与调度程序过滤器相关的配置。如果您的应用程序依赖于主题或插件中的资产被调度,或者如果您使用的是全页面缓存功能,您必须将相关配置复制到您的引导文件。您需要添加以下内容

<?php
Configure::write('Dispatcher.filters', array(
    'AssetDispatcher',
    'CacheDispatcher'
));

此外,新的 AssetDispatcher 过滤器将在检测到浏览器已经缓存了资产时返回 304 代码。

其他更改

  • 向 CakeEmail 类添加 charset() / headerCharset() 方法。
  • Travis CI 支持
  • 在 FormHelper 中添加了对 ‘on’ 验证键的支持。这将根据操作类型(创建或更新)相应地设置必需类。

在发布 2.2.0 的 beta 版本之后,核心团队将专注于巩固 2.2.x 以便最终发布,并开始进行 CakePHP 下一个版本的初始工作。

一如既往,感谢友好的 CakePHP 社区提供的补丁、文档更改和新的票证。没有您,就不会有 CakePHP!