Nasıl derin bir DateTime nesnesi kopyalayabilirim?

2 Cevap php
$date1 = $date2 = new DateTime();
$date2->add(new DateInterval('P3Y'));

Bundan üç yıl - Şimdi $date1 ve $date2 aynı tarihini içerir. Ben iki ayrı tarihsaat, bir dizeden ayrıştırılır birini ve ona eklenen üç yıl bir tane oluşturmak istiyorum. Şu anda bu böyle o kadar hack ettik:

$date2 =  new DateTime($date1->format(DateTime::ISO8601));

ama bu korkunç kesmek gibi görünüyor. Kopyada bir DateTime nesne için "doğru" yolu var mı?

2 Cevap

$date1 = new DateTime();
$date2 = new DateTime();
$date2->add(new DateInterval('P3Y'));

Update:

Kopyalamak yerine başvurmak varolan DT nesneyi, clone kullanmak değil, = istiyorum.

$a = clone $b;

clone operatörü ile tarihi Clone:

$date1 = new DateTime();
$date2 = clone $date1;
$date2->add(new DateInterval('P3Y'));

Klonlar varsayılan sığ, ama bir DateTime için yeterince derin. Kendi nesneler olarak, üst nesne değiştiğinde klonlanmış olması mantıklı özellikleri (yani alt nesneler) klonlamak için __clone() sihirli yöntemini tanımlayabilirsiniz.

(Ben belgelerine bir nesneyi klonlamak gerek iyi bir örnek PHP GTK kullanan GTK. Olduğunu düşünüyor neden emin değilim?)