My question is $b the same as $a in the output? Am I just passing a reference to $a when using ($b = $a) and not making a copy of the object?
$a = new DateTime('2014-01-15');
$i = new DateInterval('P1D');
print $a->format('Y-m-d') . PHP_EOL; // 2014-01-15
$b = $a;
print $a->add($i)->format('Y-m-d') . PHP_EOL; // 2014-01-16
print $b->format('Y-m-d') . PHP_EOL; // 2014-01-16