OOP:数据库表的一个类,数据库表行的一个类

时间:2011-11-12 07:57:36

标签: php oop

目前,我为每个数据库表构建了两个类。例如,如果我有表person,我将会有Person_ListPerson类。

设计明智,是否更好

  1. Person_List输出Person数组;或
  2. 用于输出包含表格中行数组的数组。
  3. 性能方面,哪个更好?

3 个答案:

答案 0 :(得分:2)

我认为,设计方面,并考虑到性能,将是(如果你坚持Person_List类代表表,Person代表单个记录):

  • Iterator interface用于Person_List类,这样您就可以遍历表格而无需一次性提取所有记录(在某些情况下应该会显着提升性能)例),
  • 另外使用Countable interface用于Person_List课程,因此您可以在必要时通过直接从数据库中获取数据来计算所有结果,

这应该为您提供灵活性,并允许您像数组一样使用Person_List类对象。

如果您仍然在使用这两个接口时遇到问题,可以参考以下解释:

  • 每次执行foreach ($table as $record)(其中$tablePerson_List的实例)时,current()类的Person_List方法将被调用(因为它是Iterator接口 - see docs here)的一部分,它应该返回Person类的对象;这应该发生在例如。 mysql_fetch_object();
  • 当您致电count($table)(其中$tablePerson_List的实例)时,Person_List类的count()方法将被调用,而{{1}}类将被调用可以使用例如。 mysql_num_rows() function返回所有结果,而不是从数据库中提取它们然后计数(这将再次显着提高性能),

答案 1 :(得分:0)

这实际上取决于你对记录的处理方式。访问记录中的列不应该更快(任何?)使用数组更快。不足以证明not using objects

的合理性

数组比对象更轻(内存更小),但是如果你像@Tadeck那样使用Iterator,那么这应该不是问题,因为你在内存中只有一个实例时间。

总之,对象几乎总是更好的设计(从界面的角度来看),但是,如果从性能角度来看不确定,那么对候选实现进行基准测试。如果差异不够明显,请使用对象。

答案 2 :(得分:0)

你标记了这个OOP,所以我猜你想要使用对象。在这种情况下,您希望让它返回PersonRow对象,例如表示db表中的行的对象。看看

你不应该担心性能。想出一个可读且可维护的坚固设计。只有在设计付诸行动时才会对性能感到烦恼,对其进行分析并发现它不符合性能要求。