MW211 EXIT

devlog
PHP/DateTimeインスタンスのコピー
2013年10月01日
┌──────────────────────────────────────┐
│$newDateTime = new DateTime();                                              │
│$newDateTime2 = $newDateTime;                                               │
│$newDateTime2->modify('+1 minutes');                                        │
└──────────────────────────────────────┘
上記のように、DateTimeクラスのインスタンスをコピーして
コピー先を更新すると、コピー元も更新される。
(つまり「$newDateTime」の方も1分進んでしまう)

ちょうど、アドレス渡しで更新した時のような感じだ。

では、値渡しのような別物をコピーするには?
┌──────────────────────────────────────┐
│$newDateTime2 = new DateTime($newDateTime->format('Y-m-d H:i:s'));          │
└──────────────────────────────────────┘
とか?(試していないので実際に動作するかはわからない)

いやいや、もっと簡単な方法がある。「clone」だ。
こんな感じ。
┌──────────────────────────────────────┐
│$newDateTime = new DateTime();                                              │
│$newDateTime2 = clone $newDateTime;                                         │
│$newDateTime2->modify('+1 minutes');                                        │
└──────────────────────────────────────┘
これだと「$newDateTime」の方には影響がない。
分類:PHP