CakePHP 3.3.0-beta 版本发布

CakePHP 核心团队很高兴宣布立即发布 CakePHP 3.3.0-beta 版本。这是 3.3 分支的 beta 版本。3.3 提供了许多改进,包括大型和小型改进。它还弃用了一些将在 4.0.0 中删除的功能。我们希望在 API 定义稳定之前,您能提供对新功能的任何反馈。特别是对于新的 PSR7 相关功能,因为我们认为 PSR7 在 CakePHP 的未来将扮演重要角色。

升级到 Beta 版本

您可以使用 composer 将 CakePHP 升级到 3.3.0 的 beta 版本。

php composer.phar require "cakephp/cakephp:3.3.0-beta"

行为变更

在次要版本中,我们发布了 API 兼容的变更,但代表了可能影响您的应用程序的微小行为差异。

  • Date 和 DateTime 实例的默认 JSON 编码格式现在是 ISO-8601。这意味着时区值包含一个 :。例如 2015-11-06T00:00:00+03:00
  • Controller::referer() 现在在生成应用程序本地 URL 时始终省略应用程序基路径。以前,字符串 URL 将在它们之前加上基路径,而数组 URL 则不会。

添加了多分页支持

您现在可以在单个控制器操作/视图模板中对多个查询进行分页。通过使用 scope 选项,您可以在分页中使用作用域查询字符串参数。

// In a controller action
$articles = $this->paginate($this->Articles, ['scope' => 'article']);
$tags = $this->paginate($this->Tags, ['scope' => 'tag']);
$this->set(compact('articles', 'tags'));

在您的视图中,您可以定义要分页的模型以使用作用域查询字符串参数。

// Create links for the paginated articles.
$this->Paginator->options(['defaultModel' => 'Articles']);

// Create links for the paginated tags.
$this->Paginator->options(['defaultModel' => 'Tags']);

添加了 PSR7 中间件

与弃用 Dispatcher Filters 相一致,添加了对 PSR7 中间件的支持。中间件是新的 HTTP 堆栈的主要部分,是 CakePHP 3.3.0 的一个可选组件。通过使用新的 HTTP 堆栈,您可以利用以下功能:

  • 使用来自插件和 CakePHP 之外库的中间件。
  • 在从 Http\Client 获取的响应以及应用程序生成的响应中利用相同的响应对象方法。
  • 能够增强错误处理和资产传递发出的响应对象。

有关如何使用新的 HTTP 堆栈的更多信息,请参阅 中间件文档

Http Client 现在与 PSR7 兼容

Cake\Network\Http\Client 已移至 Cake\Http\Client。它的请求和响应对象现在实现了 PSR7 接口

ORM 改进

  • 已添加对映射复杂数据类型的额外支持。这使得处理地理空间类型和无法用 SQL 查询中的字符串表示的数据更加容易。
  • 添加了一个新的 JsonType。这种新类型允许您使用 MySQL 和 Postgres 中可用的本机 JSON 类型。在其他数据库提供程序中,json 类型将映射到 TEXT 列。
  • Association::unique() 已添加。此方法代理目标表的 unique() 方法,但确保应用关联条件。
  • isUnique 规则现在应用关联条件。
  • 当实体转换为 JSON 时,关联对象不再使用 toArray() 首先转换为数组。相反,将对所有关联实体调用 jsonSerialize() 方法。这为您提供了更多灵活性,可以控制在实体的 JSON 表示中公开哪些属性。
  • Table::newEntity()Table::patchEntity() 现在将在关联的键中存在未知关联时引发异常。
  • RulesChecker::validCount() 已添加。这种新方法允许将规则应用于实体拥有的关联记录的数量。
  • partialNullsPass 选项已添加到 existsIn 规则中。此选项允许规则在某些列为 null 时通过。

添加了缓存 Shell

为了帮助您更好地管理来自 CLI 环境的缓存数据,添加了一个 shell 命令,它公开了用于清除缓存数据的方法。

// Clear one cache config
bin/cake cache clear <configname>

// Clear all cache configs
bin/cake cache clear_all

其他变更

3.3.0 中还有许多其他很棒的新内容。请参阅 迁移指南,以了解 3.3.0 带来的所有优秀内容。

弃用

3.3.0 将弃用一些功能。请参阅 弃用功能,以了解更多详细信息。弃用的功能将在 4.0.0 之前不会被删除。

除非 3.3.0-beta 版本存在重大问题,否则我们将发布候选版本和稳定的版本包,时间在 4-5 周内。3.3.0 的文档现在可以在 手册 中找到。

与往常一样,衷心感谢所有通过报告问题和发送拉取请求帮助发布此版本的社区成员。

下载 github 上的打包版本