オブジェクト指向の PHP で非常に多くのコードを作成してきましたが、これまで、私のクラスはすべて「特異」でした。私はいくつかのクラス (5 つほどの同一のメソッドを持つ) を変更して、1 つのクラスを拡張しようとしています (重複したコードを取り除くため)。いくつかの問題が発生しています。
親クラスのメソッドにアクセスしようとしていますが、問題が発生しています。
親クラス:
class DatabaseObject {
public static function find_all() {
return self::find_by_sql("SELECT * FROM " . self::$table_name);
}
}
子クラス:
class Topics extends DatabaseObject {
protected static $table_name = "master_cat";
protected static $db_fields = array('cat_id', 'category');
public $cat_id;
public $category;
}
php/html ファイルからこのテーブルのすべての情報にアクセスしようとするコード:
$topics=Topics::find_all();
foreach($topics as $topic):
echo $topic->category;
endforeach;
ご覧のとおり、ほとんどのコードは新しいやり方にマージされていません。私がやっている新しい方法では機能しなくなった self::$table_name を変更する必要があります。このオブジェクトを拡張する約 5 つのクラスがあるため、これをコーディングして 1 つのメソッドで異なるテーブルにアクセスできるようにする最善の方法は何ですか (この正確な find_all() メソッドを 5 つの異なるクラスに含めるのではなく)。