Contributed by
Valentin Udaltsov
in #25582.

DateTimeImmutable 类 打从 PHP 5.5 引入。它提供了和 DateTime 相同的API,但当它调用其 modify()set*() 方法时,它返回的是一个全新的 DateTimeImmutable 对象,不会改变原始值。

在近期的 Symfony 版本中,我们在框架的某几个部分添加了对 immutable 日期的支持。 在 Symfony 4.1 中我们完成了一个在社区中被长久期待的 在 Symfony 表单中添加对 immutable 日期的支持

当使用 DateTimeType, DateTypeTimeType 字段类型来构建表单时,把它们的 input 选项设置成全新的 datetime_immutable 值:

1
2
3
4
5
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
 
$builder->add('startsAt', DateTimeType::class, array(
    'input' => 'datetime_immutable',
));

现在你就可以把一个 DateTimeImmutable 对象设置为该字段的值了。当表单被提交且有效时,你会得到一个 DateTimeImmutable 对象以及被用户设置的新值。