【发布时间】:2012-06-27 00:19:48
【问题描述】:
我已经用 PHP 编写了很多面向对象的代码,但到目前为止,我所有的类都是“单一的”,我想你可以称之为。我正在更改几个类(有 5 个左右相同的方法)以扩展一个类(以摆脱重复的代码)。我遇到了一些问题。
我正在尝试访问父类中的方法,但您可以看到问题。
父类:
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 个类扩展这个对象,那么最好的编码方法是什么,这样我就可以用一种方法访问不同的表(而不是在 5 个不同的类中包含这个确切的 find_all() 方法。
【问题讨论】:
-
我建议您阅读有关 OOP 的更多信息,尤其是它在 PHP 中的实现方式。给你一个工作代码并不能解决真正的问题。
-
相反,我是通过别人的代码来学习的。也许我现在会等待有人真正回答这个问题。
-
我经常阅读“我从其他人的代码中学习”,以至于不知道它不能很好地工作。你应该考虑读一本书。
-
我认为这个问题没有错,只是没有人有答案。但是感谢@Matthijs,我们得到了启发
标签: php class extends object-oriented-database