Я делаю строгое сравнение списка объектов, просто чтобы определить объекты, которые могли измениться, например:
if ($oldValue !== $newValue)
в некоторых случаях $oldValue
а также $newValue
являются DateTime
объекты.
Отладка моего приложения Я получаю следующий вывод для моих двух значений непосредственно перед их сравнением:
DateTime Object
(
[дата] => 2017-04-24 00: 00: 00.000000
[timezone_type] => 3
[часовой пояс] => UTC
)DateTime Object
(
[дата] => 2017-04-24 00: 00: 00.000000
[timezone_type] => 3
[часовой пояс] => UTC
)
Почему мое сравнение / условие все еще верно?
При сравнении объектов в PHP ===
Оператор не сравнивает значения. Это сравнивает случаи. Это означает, что если оба объекта не указывают на один и тот же объект, они не являются строго равными.
При использовании оператора сравнения (==) переменные объекта сравниваются
простым способом, а именно: два экземпляра объекта равны, если они
имеют одинаковые атрибуты и значения (значения сравниваются с ==), и
являются экземплярами одного и того же класса.При использовании идентификатора оператора (===) переменные объекта идентичны
если и только если они ссылаются на один и тот же экземпляр одного и того же класса.
Других решений пока нет …