CakePHP 3.0.0 开发预览版 2 发布

CakePHP 核心团队非常高兴地宣布 CakePHP 3.0 的第二个开发预览版

CakePHP 核心团队很高兴地宣布 CakePHP 3.0.0[1] 的第二个开发预览版。在 3.0.0-dev1 发布后的几个月里,我们一直在努力整合社区对 ORM 的反馈,并构建了第一个开发预览版中缺少的一些功能。

3.0.0-dev2 中的新功能

  • CakePHP 已采用 PSR-4 自动加载器标准。如果您正在更新,请确保使用 `composer self-update` 更新 composer。
  • 由于 PSR-4,CakePHP 和 App 骨架的目录结构都简化了一些。
  • AclComponent 已被移除 - 它将作为插件返回。
  • TestShell 和 webrunner 已被移除,取而代之的是仅从 CLI 和 VisualPHPUnit 支持 phpunit。
  • 视图模板已从 View/ 移动到 Template/。这样做是为了让 View/ 目录只包含视图类和辅助函数。
  • HtmlHelper、FormHelper 和 SessionHelper 一致地使用字符串模板。
  • ID 属性现在始终使用 `-` 生成,而不是 CamelCase。这样做是为了在 CSS 选择器中使用一种约定。
  • API 文档和手册已经增加了许多新部分和改进。
  • Scaffold 已被移除。通过 CRUD 插件[2] 可以使用改进的动态脚手架,该插件已经与 3.0 兼容,并且消除了控制器中执行的大部分重复性任务。
  • UpgradeShell 已移入一个单独的插件。
  • 对一些复杂对象(如实体、表和查询)提供了更好的调试输出。还添加了一种特殊方法来控制使用 debug() 函数时对象的输出数据。
  • 添加了 Collection::insert()

FormHelper

FormHelper 从头开始重新构建。它具有一个新的可扩展小部件系统。表单小部件允许您构建自包含的输入小部件。这使得定义复杂的小部件(如应用程序或插件代码中的 datetime 小部件)变得很容易。创建后,小部件可以与其他 FormHelper 功能(如 `input()`)组合使用。

FormHelper 现在也与新的 ORM 配合使用。您可以为单个实体或实体集合创建表单。

 `
//Createaformforasingleentity&itsassociations
echo$this->Form->create($article);

//Createaformformultipleentities&theirassociations.
echo$this->Form->create($articles);

`

FormHelper 还具有一个可插拔的上下文系统,允许您将 FormHelper 与您可能希望使用的任何 ORM 集成。

TranslateBehavior

TranslateBehavior 已从头开始重新构建。它具有期待已久的从 find() 中翻译所有模型(包括关联)的能力。新的 `TranslateTrait` 使处理实体中的多个翻译变得简单。

ORM 改进

我们继续在 ORM 中构建功能。dev2 中的一些显着改进是

  • 复合主键支持 - ORM 现在支持所有关联中的复合主键。
  • Model.beforefind 事件现在在同一查询中触发所有关联。
  • 热切加载现在与 Query 类分离。这使得实现自定义热切加载变得容易得多。
  • Model/Repository 已重命名为 Model/Table。许多人发现“Repository”是一个令人困惑和陌生的术语。
  • 接口已被提取,以减少对具体实现的依赖。
  • 添加了 formatResults() 方法,以提供 afterFind() 过去所做的大部分功能。
  • 添加了 Query::counter(),以提供对复杂计数逻辑的支持。这使得在 PaginatorComponent 中覆盖计数变得更容易。
  • 添加了 Table::patchEntity(),它使您能够将 requet 表单数据合并到现有实体及其关联中。

下一步

我们的下一个版本将是另一个开发预览版。在 dev3 版本中,我们将重点关注更新

  • Bake 和所有相关任务需要更新以与新的 ORM 配合使用。
  • 更新 i18n 提取任务以从 Table 对象中提取验证消息。
  • 添加对 SQLServer 的支持。由于数据库层相当稳定,添加 SQLServer 将帮助 Windows 上的开发人员。

有关 3.0.0 中所有更改的更多详细信息,您可以查阅迁移指南[2]。我要感谢所有为 3.0 做出贡献想法、代码、文档或反馈的人。它将成为该项目的一个重要里程碑,我们才刚刚开始将其打造为有史以来最好的 CakePHP 版本。