Dlaczego w tym kodzie mój obiekt DateTime został skopiowany przez odniesienie?
Oto mój kod:PHP - Dlaczego obiekt DateTime jest kopiowany przez odniesienie w moim kodzie?
<?php
date_default_timezone_set('UTC');
$dt1 = new \DateTime('2015-03-15');
$dt2 = $dt1;
$dt2 = $dt2->modify('-1 year');
echo $dt1->format('c') . PHP_EOL;
echo $dt2->format('c');
?>
Spodziewałem:
2015-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
Ale mam to:
2014-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
Musisz użyć klonu '$ dt2 = clone $ dt1;' – vaso123
Jeśli użyjesz klasy 'DateTimeImmutable' to zadziała, zachowuje się dokładnie tak samo jak klasa' DateTime', ale nigdy nie modyfikuje samej siebie, ale zwraca nowy obiekt zamiast. – Daan