今更PHP5の話。
いや、なにげに最後に開発したのがPHP4の環境で、その後ブランクもあったりするもんだから今回初めてPHP5で開発してる訳で。
<?php $dt1 = new DateTime(); $dt2 = new DateTime(); foreach ($xxx as $yyy) { $dt = new DateTime(); $dt1 = $dt; $dt2 = $dt; ... } $dt1->mofify("-7 day"); $dt2->modify("+7 day");
とかしたら怒られて「ナンデ?」と調べてみたら。
※PHP4ではデフォルト(方法を未指定の場合)ではディープコピー(値渡し)とみなされましたが、PHP5ではデフォルトでシャローコピー(参照渡し)とみなされます。
オブジェクトのコピー | オブジェクト指向PHP
mjk。
ということで
<?php $dt1 = new DateTime(); $dt2 = new DateTime(); foreach ($xxx as $yyy) { $dt = new DateTime(); $dt1 = clone $dt; $dt2 = clone $dt; ... } $dt1->mofify("-7 day"); $dt2->modify("+7 day");
としたら怒られなくなった。ホントにこれでいいのか。