使用PHP';s ArrayObject以实现模型对象的集合

使用PHP';s ArrayObject以实现模型对象的集合,php,model-view-controller,datamapper,redbean,arrayobject,Php,Model View Controller,Datamapper,Redbean,Arrayobject,我正在为我的开发一个“fat模型”,我正在处理ORM(RedBeanPHP)和控制器之间的层 我将有一个User类,可能还有一个UserFactory/UserMapper类,它可以构造User对象,以及执行元操作,如usernameExists,等等 许多其他SO问题/博客文章指出,如果我需要检索User对象的集合,让我的UserMapper类遍历结果集并构建nUser对象将是低效的 然后,我的想法是创建一个UserCollection类,该类实现PHP的ArrayObject类UserMap

我正在为我的开发一个“fat模型”,我正在处理ORM(RedBeanPHP)和控制器之间的层

我将有一个
User
类,可能还有一个
UserFactory
/
UserMapper
类,它可以构造
User
对象,以及执行元操作,如
usernameExists
,等等

许多其他SO问题/博客文章指出,如果我需要检索
User
对象的集合,让我的
UserMapper
类遍历结果集并构建n
User
对象将是低效的

然后,我的想法是创建一个
UserCollection
类,该类实现PHP的
ArrayObject
UserMapper
将能够创建一个
UserCollection
,将原始结果集作为多维数组存储在内部。然后,我可以实现
ArrayObject
的迭代器函数、
[]
等,根据需要构造相应的
用户
对象


这样做明智吗?在使用这种方法之前,我需要考虑什么?

< P>以渲染大的数据列表,实际上每行使用一个实例会慢一些。这就是flyweight图案派上用场的地方。。。 看来:


如果最流行的PHP框架是这样做的,我会说这是一个非常好的认可。

我不确定这会有多重要,因为我希望用户对象的共同数据相对较少。
class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate, Jsonable, JsonSerializable {

...

public function fetch($key)
{
return new static(array_fetch($this->items, $key));
}

}