Использование PHP ArrayObject для реализации коллекции объектов модели

Я разрабатываю «толстую модель» для моего проект с открытым исходным кодом, и я работаю над слоем, который будет находиться между ORM (RedBeanPHP) и контроллером.

У меня будет User класс, и, вероятно, UserFactory/UserMapper класс, который может построить User объекты, а также выполнять мета-действия, такие как usernameExists, так далее.

Ряд других SO вопросов / сообщений в блоге указали, что если мне нужно получить коллекция из User объекты, было бы неэффективно иметь UserMapper класс перебрать весь набор результатов и построить N User объекты.

Моя идея заключается в том, чтобы создать UserCollection класс, который реализует PHP ArrayObject учебный класс. UserMapper сможет создать UserCollection который хранит необработанный результирующий набор внутри себя, как многомерный массив. Я мог бы затем реализовать ArrayObjectитераторные функции, []и т. д., чтобы построить соответствующий User объекты по запросу.

Это умный способ сделать это? Что я должен рассмотреть, прежде чем использовать этот подход?

1

Решение

Для рендеринга больших списков данных на самом деле будет медленнее использовать экземпляр на строку. Вот тут-то и пригодится модель легковес …
http://sourcemaking.com/design_patterns/Flyweight/php

0

Другие решения

Казалось бы, что это именно то, как ORM Laravel, Eloquent, делает это:

class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate, Jsonable, JsonSerializable {

...

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

}

Если бы самый популярный PHP-фреймворк делал это таким образом, я бы сказал, что это довольно хорошее одобрение.

0

По вопросам рекламы [email protected]