在 PHP5 面向对象中获取大量数据的正确方法

Posted

技术标签:

【中文标题】在 PHP5 面向对象中获取大量数据的正确方法【英文标题】:The correct way to fetch a lot of data in PHP5 object oriented 【发布时间】:2009-03-31 07:51:26 【问题描述】:

幸运的是,我知道如何从数据库中获取数据,这不是问题。 对于我的面向对象应用程序,我将有一个包含用户/人员的表。 我还有一个person 课程。

案例: 我想向最终用户显示所有人员的列表。这样做的正确方法是什么?

    在这种情况下使用mysql_fetch_object() php 将创建它自己的类型 对象,不是我自己的person 从数据库中获取所有行,然后为每个行创建一个对象?

或者有其他更好的方法吗?

您能否也显示一些(伪)代码?

谢谢

【问题讨论】:

【参考方案1】:

mysql_fetch_object() 函数接受第二个参数,即要使用的类名:

$myPerson = mysql_fetch_object($result, 'person');

【讨论】:

不要忘记在写出对象后丢弃对对象的引用,否则如果周围有太多对象,您将耗尽可用内存。【参考方案2】: 选项 1:使用 ORM(Propeler,Doctrine) 选项 2:创建类 People ("Persons"),它将使用 mysql_fetch_* 加载其数据,然后创建 Person 对象数组。让它实现IteratorAggregategetIterator 返回ArrayIterator(personArray)

【讨论】:

感谢您的反应。我已经创建了迭代器,但真的不知道如何使用它。 如果你有实现 IteratorAggregate 的对象 People,你可以使用它:foreach (people as person) doSomethingWith(person) 好的,我会尝试解决它,否则我将在不同的主题中详细说明。到目前为止,谢谢。【参考方案3】:

如果你使用PDO,$pdoStatement->fetchObject($type) 会获取一行作为$type 类的实例

要获取所有对象作为$type 类的实例,请使用$pdoStatement->fetchAll(PDO::FETCH_CLASS, $type)

【讨论】:

感谢您的回复。但是我们不使用 pdo 类。我们制作了自己的

以上是关于在 PHP5 面向对象中获取大量数据的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

创建和使用解耦——工厂模式详解(工厂方法+抽象工厂)

PHP5-FPM 随机开始消耗大量 CPU

完结OO第四阶段总结,内涵大量对测试者的批判

MATLAB 中的 GPU 编码器,用于大量面向对象的代码

在 Python 中通过套接字发送大量数据的正确方法是啥?

面向对象编程——class继承