Perché in questo codice il mio oggetto DateTime è stato copiato in base al riferimento?
Ecco il mio codice:PHP - Perché l'oggetto DateTime è copiato per riferimento nel mio codice?
<?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');
?>
mi aspettavo:
2015-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
ma ho ottenuto questo:
2014-03-15T00:00:00+00:00
2014-03-15T00:00:00+00:00
È necessario utilizzare clone '$ dt2 = clone $ dt1;' – vaso123
Se si utilizza la classe 'DateTimeImmutable' funzionerà, si comporta esattamente come la classe' DateTime' tranne che non si modifica mai ma restituisce un nuovo oggetto anziché. – Daan