Zrobiłem dużo i dużo kodu w PHP, który jest zorientowany obiektowo, ale do tej pory wszystkie moje klasy były "pojedyncze", przypuszczam, że możesz to nazwać. Jestem w trakcie zmiany kilku klas (które mają 5 identycznych metod), aby rozszerzyć jedną klasę (aby pozbyć się duplikatu kodu). Występuję w kilku kwestiach.PHP - Rozszerzanie klasy
Próbuję uzyskać dostęp do metody w klasie nadrzędnej, ale można zobaczyć problem.
klasanadrzędny:
class DatabaseObject {
public static function find_all() {
return self::find_by_sql("SELECT * FROM " . self::$table_name);
}
}
Klasa dziecka:
class Topics extends DatabaseObject {
protected static $table_name = "master_cat";
protected static $db_fields = array('cat_id', 'category');
public $cat_id;
public $category;
}
kod próbuje uzyskać dostęp do wszystkich informacji z tej tabeli z php pliku/html:
$topics=Topics::find_all();
foreach($topics as $topic):
echo $topic->category;
endforeach;
Jak widać , Większość kodu nie została połączona z nowym sposobem robienia rzeczy. Muszę zmienić self :: $ table_name, która nie działa już w nowy sposób, w jaki robię. Będę miał około 5 klas rozszerzających ten obiekt, więc jaki jest najlepszy sposób kodowania tego, abym mógł uzyskać dostęp do różnych tabel za pomocą jednej metody (zamiast włączania tej dokładnej metody find_all() w 5 różnych klasach:
Polecam, aby przeczytać więcej o OOP, a zwłaszcza o sposobie jego implementacji w PHP. ng ci działający kod nie rozwiąże prawdziwego problemu. – Adi
Wręcz przeciwnie, uczę się przez kod innych ludzi. Być może będę czekał, aż ktoś rzeczywiście odpowie na to pytanie. – KickingLettuce
Przeczytałem "Uczę się z kodu innych ludzi" zbyt często, aby wiedzieć, że to nie działa dobrze. Powinieneś rozważyć przeczytanie książki. – KingCrunch