Tamam ben PHP örnek yayınlayacağız bu sadece bir PHP soru değil, ama ben PHP bu sorun var.
Örnek:
Ben üç sınıf, diyelim ki, data_abstract, kişi ve öğrenci var. Şimdi, bu nesnelerin her biri ile ilgili verilerin bir dizi var.
class person extends data_abstract { protected $data; //name, gender, etc } class student extends person { protected $data; //student_id, etc }
Şimdi, örneğin, table_person, table_student, veritabanı tablolarından bu "veri" özelliğinin her varsayarak.
Örnekleme sonra biz get_class () fonksiyonu ile sınıf adı ayrıştırmak olacak ve ilgili tablolardan veri almak.
class data_abstract { public function __construct() { $name = get_class($this); $table = 'table_' . $name; $this->data = DB->query('SELECT * FROM ' . $table); //whatever DB constant is, //I'm just trying to get all rows of data from the related table. } }
Tamam, şimdi sorun, ben $ öğrenci tarafından öğrenci örneğini zaman = new öğrenci (); Yapıcı benim için table_student veri almak ve $ öğrenci-> veri koymak, ama ben table_person gelen veri almak ve bir nesnenin içine veri bu iki set koymak mümkün olmayacaktır olacak.
Başka bir sınıfını genişleterek, tüm yöntemleri (işlevler) genişletilmiş ve özelleştirilmiş (polimorfizm ile) var, ama nesnenin her düzeyde nitelikleri / özellikleri uzanan en azından bazı el yapımı olmadan, zor gibi görünüyor olabilir.
Bunu başarmak için soyutlama düzeyinde herhangi bir yolu var mı?
(Okuma için teşekkürler, ben soru daha net yaptık isterdim.)