Nesne yönelimli PHP'de çok fazla kod yaptım, ama şimdiye kadar bütün sınıflarım "tekil", sanırım onu arayabilirsin. Bir sınıfı genişletmek için (yinelenen koddan kurtulmak için) birkaç sınıf değiştirme (5 veya daha fazla özdeş yönteme sahip) durumundayım. Birkaç sorunla karşılaşıyorum.PHP - Sınıfı Genişletme
Bir ana sınıftaki bir yönteme erişmeye çalışıyorum, ancak sorunu görebilirsiniz.
Veli sınıfı:
class DatabaseObject {
public static function find_all() {
return self::find_by_sql("SELECT * FROM " . self::$table_name);
}
}
Çocuk Sınıfı:
class Topics extends DatabaseObject {
protected static $table_name = "master_cat";
protected static $db_fields = array('cat_id', 'category');
public $cat_id;
public $category;
}
Kod php/html dosyasından bu tablodan tüm bilgileri erişmeye çalışırken: Gördüğünüz gibi
$topics=Topics::find_all();
foreach($topics as $topic):
echo $topic->category;
endforeach;
Kodun çoğu, yeni şeyler yapma yoluna dahil edilmedi. Artık yeni şeyler yapmama neden olan self :: $ table_name değerini değiştirmem gerekiyor. Bu nesneyi genişleten yaklaşık 5 Sınıfım olacak, bu yüzden kodlamanın en iyi yolu, farklı tablolara tek bir yöntemle erişebilmem için (bu tam find_all() yöntemini 5 farklı sınıfta içermekten ziyade)
OOP ve özellikle PHP'de uygulanma şekli hakkında daha fazla bilgi edinmenizi öneririz. Bir çalışma kodu size gerçek sorunu çözmeyecektir. – Adi
Aksine, başkalarının kodlarını öğreniyorum. Belki de şimdi birisinin soruyu gerçekten yanıtlamasını bekleyeceğim. – KickingLettuce
"Diğer insanların kodlarından öğrendim" diye sık sık öğrenmek, çok iyi çalışmadığını. Kitap okumayı düşünmelisin. – KingCrunch