Yeni sınıf orijinal nesnenin bir alt sınıfıdır
Bu uyumlu php4 gerekiyor
Sen sınıfları boş örneği ve ardından yöntemlerden herhangi sayısına göre yüklenen olabilir. Bu yöntemlerden biri, bir argüman olarak ana sınıfının bir örneğini kabul ve oradan verileri kopyalamak olabilir
class childClass extends parentClass
{
function childClass()
{
//do nothing
}
function loadFromParentObj( $parentObj )
{
$this->a = $parentObj->a;
$this->b = $parentObj->b;
$this->c = $parentObj->c;
}
};
$myParent = new parentClass();
$myChild = new childClass();
$myChild->loadFromParentObj( $myParent );
Bir php nesne bir dizi için bir sürü farklı değildir, ve tüm PHP 4 nesne değişkenleri kamu olduğundan, bu gibi bazı dağınık şeyler yapabilirsiniz:
function clone($object, $class)
{
$new = new $class();
foreach ($object as $key => $value)
{
$new->$key = $value;
}
return $new;
}
$mySubclassObject = clone($myObject, 'mySubclass');
Onun güzel, değil onun certianly değil ne iyi uygulama olarak kabul ediyorum, ama is yeniden ve oldukça temiz.
Iyi yöntem yapabileceğini böylece Altsınıf bir klon yöntemi oluşturmak olacaktır:
$myvar = $subclass->clone($originalObject)
Eğer dekoratör desen içine bakmak olabilir gibi alternatif geliyor php example
Ben ciddiye why Eğer ilk etapta bu şartı var soru olsa da, bazı kara büyü ile yapabilirsiniz. Bu tasarım ile ciddi yanlış bir şey olduğunu göstermektedir.
Bununla birlikte:
function change_class($object, $new_class) {
preg_match('~^O:[0-9]+:"[^"]+":(.+)$~', serialize($object), $matches);
return unserialize(sprintf('O:%s:"%s":%s', strlen($new_class), $new_class, $matches[1]));
}
Bu, diğer nesneler veya kaynaklara referanslar kayıp anlamına gelir, genel, tefrika gibi aynı sınırlamalara tabidir.