Ben benim uygulamaları genel CRUD için kullanabileceğiniz bir üst nesne var - bu temel tasarruf vardır & Ben bütün nesneleri onlara bunları yeniden eklenmesini gerekmez böylece yöntemlerini almak. Çocuğumun çoğu bu taban nesnesi genişletmek nesneleri. Bu iyi çalıştı, ama ben bir tefrika çocuk nesne alma ile ilgili bir sorun buluyorum. Sonra dizgilenmemiş çocuğun özelliklerinden kendini doldurur, çocuğun bir örneğini oluşturur üst nesne bir "almak" yöntemini kullanın - bunun anlamı "kendi kendini unserialize" nesnesidir.
Tek sorun - alt nesne varsa, bir korumalı veya özel mülkiyet, üst nesne okuyamaz, bu nedenle alımı sırasında aldı almaz.
Yani "kendini unserialize" veya bir üst nesne korumalı özelliklerini "görmek" izin vermek için bir yol için daha iyi bir yol ya arıyorum - ama sadece alma sürecinde.
Kod örneği:
BaseObject {
protected $someparentProperty;
public function retrieve() {
$serialized = file_get_contents(SOME_FILENAME);
$temp = unserialize($serialized);
foreach($temp as $propertyName => $propertyValue) {
$this->$propertyName = $propertyValue;
}
}
public function save() {
file_put_contents(SOME_FILENAME, serialize($this));
}
}
class ChildObject extends BaseObject {
private $unretrievableProperty;
public setProp($val) {
$this->unretrivableProperty = $val;
}
}
$tester = new ChildObject();
$tester->setProp("test");
$tester->save();
$cleanTester = new ChildObject();
$cleanTester->retrieve();
// $cleanTester->unretrievableProperty will not be set
GÜNCELLEME: "Özel" korumalı değil çocuk özellikleri, bahsedilen gerekirdi.