为什么 php (===) 中的相同运算符会因 DateTimeImmutable 对象而失败?

hos*_*eio 5 php comparison equality identity-operator

我有两个DateTimeImmtable对象,期望它们是相同的,我很惊讶地发现它们不是。即,为什么是以下false

<?php
$d = new \DateTimeImmutable('2018-01-01');
$e = new \DateTimeImmutable('2018-01-01');

var_dump($d === $e);
Run Code Online (Sandbox Code Playgroud)

当然$d == $e评价为true

iai*_*inn 4

这与对象无关DateTimeImmutable,这只是 PHP 处理对象比较的方式。从手册中:

当使用恒等运算符 (===) 时,对象变量当且仅当它们引用同一类的同一实例时才是相同的。

使用此运算符比较任何两个不同的实例将始终返回 false,无论任何属性的值如何。