query); } /** * CollectionIterator constructor. * @param $model * @param $query * @param array $array * @param int $flags * @throws Exception */ public function __construct($model, $query, array $array = [], int $flags = 0) { $this->model = $model; $this->query = $query; parent::__construct($array, $flags); } /** * @param $current * @return ModelInterface * @throws Exception */ protected function newModel($current): ModelInterface { return $this->model->populates($current); } /** * @throws Exception */ public function current(): ModelInterface { if (is_array($current = parent::current())) { $current = $this->newModel($current); } return $current; } }