CakePHP 3.2.0-RC1 发布
CakePHP 核心团队很高兴宣布 CakePHP 3.2.0-RC1 立即发布。此版本是 3.2 分支的第一个候选版本,它为 3.x 系列添加了一些新功能。我们感谢您在新的 API 定义稳定之前提供任何关于这些新功能的反馈。
最低要求 PHP 5.5
CakePHP 3.2 至少需要 PHP 5.5.10。通过采用 PHP 5.5,我们可以提供更好的日期和时间库,并消除对密码兼容性库的依赖。
禁用弃用警告
升级后,您可能会遇到一些弃用警告。这些警告是由将在 CakePHP 4.x 中移除的方法、选项和功能发出的,但在 3.x 的整个生命周期中会继续存在。虽然我们建议在遇到弃用问题时解决它们,但这并不总是可能的。如果您希望推迟修复弃用通知,可以在您的 **config/app.php** 中禁用它们
'Error' => [
'errorLevel' => E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED,
]
上述错误级别将抑制 CakePHP 发出的弃用警告。
Carbon 被 Chronos 替换
Carbon 库已被 cakephp/chronos 替换。这个新库是 Carbon 的一个分支,没有额外的依赖关系。它还提供了一个日历日期对象,以及日期和时间对象的不可变版本。
新日期对象
Date 类允许您将 DATE 列干净地映射到 PHP 对象。Date 实例将始终将其时间修复为 00:00:00 UTC。默认情况下,ORM 现在在映射 DATE 列时会创建 Date 实例。
新的不可变日期和时间对象
添加了 FrozenTime 和 FrozenDate 类。这些类提供了与 Time 对象相同的 API。frozen 类提供了 Time 和 Date 的不可变变体。通过使用不可变对象,您可以防止意外的变异。而不是就地修改,修饰符方法会返回 *新的* 实例
use Cake\I18n\FrozenTime;
$time = new FrozenTime('2016-01-01 12:23:32');
$newTime = $time->modify('+1 day');
在上面的代码中,$time 和 $newTime 是不同的对象。 $time 对象保留其原始值,而 $newTime 具有修改后的值。从 3.2 开始,ORM 可以将日期/时间列映射到不可变对象。
添加了 CorsBuilder
为了使设置与跨域请求 (CORS) 相关的标头变得更容易,添加了一个新的 CorsBuilder。此类允许您使用流畅的界面定义 CORS 相关的标头。
ORM 改进
- 包含同一个关联多次现在按预期工作,并且查询生成器函数现在被堆叠。
- 函数表达式现在会正确地转换其结果。这意味着像 $query->func()->current_date() 这样的表达式将返回日期时间实例。
改进的验证器 API
验证器对象具有一些新方法,这些方法使构建验证器不那么冗长。例如,将验证规则添加到用户名字段现在可以像这样
$validator->email('username')
->ascii('username')
->lengthBetween('username', [4, 8]);
控制台改进
- Shell::info()、Shell::warn() 和 Shell::success() 已添加。这些辅助方法使使用常用的样式变得更简单。
- 添加了 Cake\Console\Exception\StopException。
- 添加了 Shell::abort() 来替换 error()。
添加了 StopException
Shell::_stop() 和 Shell::error() 不再调用 exit()。相反,它们会引发 Cake\Console\Exception\StopException。如果您的 shell/任务正在捕获 \Exception,而这些方法原本会被调用,则这些捕获块需要更新,以便它们不会捕获 StopException。通过不调用 exit(),测试 shell 应该更容易,并且需要更少的模拟。
Helpers 初始化()
Helpers 现在可以像其他类类型一样实现一个 initialize(array $config) 钩子方法。
FormHelper
FormHelper::create() 的 action 键已弃用。您应该直接使用 url 键。
致命错误内存限制处理
一个新的配置选项 Error.extraFatalErrorMemory 可以设置为遇到致命错误时要增加的内存限制的兆字节数。这允许在完成日志记录或错误处理时有喘息的空间。
弃用
随着我们不断改进 CakePHP,某些功能因被更好的解决方案取代而被弃用。弃用的功能将不会在 4.0 之前移除
- Shell::error() 已弃用,因为它的名称没有明确表明它既输出消息又停止执行。请改用 Shell::abort()。
- Cake\Database\Expression\QueryExpression::type() 已弃用。请改用 tieWith()。
- Cake\Database\Type\DateTimeType::$dateTimeClass 已弃用。请改用 DateTimeType::useMutable() 或 DateTimeType::useImmutable()。
- Cake\Database\Type\\DateType::$dateTimeClass 已弃用。请改用 DateTimeType::useMutable() 或 DateType::useImmutable()。
- Cake\ORM\ResultSet::_calculateTypeMap() 现在已不再使用,并且已弃用。
- Cake\ORM\ResultSet::_castValues() 现在已不再使用,并且已弃用。
除非 3.2.0-RC1 版本存在重大问题,否则我们将在接下来的 4-5 周内发布一个稳定版本。3.2.0 的文档现在可以在 手册 和 API 中找到。
一如既往,衷心感谢所有帮助实现此版本发布的社区成员,他们报告了问题并提交了拉取请求。
下载 GitHub 上的打包发布版本。