![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-db/src/ResultSet/ |
<?php namespace Laminas\Db\ResultSet; use ArrayObject; use Laminas\Hydrator\ArraySerializable; use Laminas\Hydrator\ArraySerializableHydrator; use Laminas\Hydrator\HydratorInterface; use function class_exists; use function gettype; use function is_array; use function is_object; class HydratingResultSet extends AbstractResultSet { /** @var HydratorInterface */ protected $hydrator; /** @var null|object */ protected $objectPrototype; /** * Constructor * * @param null|object $objectPrototype */ public function __construct(?HydratorInterface $hydrator = null, $objectPrototype = null) { $defaultHydratorClass = class_exists(ArraySerializableHydrator::class) ? ArraySerializableHydrator::class : ArraySerializable::class; $this->setHydrator($hydrator ?: new $defaultHydratorClass()); $this->setObjectPrototype($objectPrototype ?: new ArrayObject()); } /** * Set the row object prototype * * @param object $objectPrototype * @return $this Provides a fluent interface * @throws Exception\InvalidArgumentException */ public function setObjectPrototype($objectPrototype) { if (! is_object($objectPrototype)) { throw new Exception\InvalidArgumentException( 'An object must be set as the object prototype, a ' . gettype($objectPrototype) . ' was provided.' ); } $this->objectPrototype = $objectPrototype; return $this; } /** * Get the row object prototype * * @return object */ public function getObjectPrototype() { return $this->objectPrototype; } /** * Set the hydrator to use for each row object * * @return $this Provides a fluent interface */ public function setHydrator(HydratorInterface $hydrator) { $this->hydrator = $hydrator; return $this; } /** * Get the hydrator to use for each row object * * @return HydratorInterface */ public function getHydrator() { return $this->hydrator; } /** * Iterator: get current item * * @return object|null */ public function current() { if ($this->buffer === null) { $this->buffer = -2; // implicitly disable buffering from here on } elseif (is_array($this->buffer) && isset($this->buffer[$this->position])) { return $this->buffer[$this->position]; } $data = $this->dataSource->current(); $current = is_array($data) ? $this->hydrator->hydrate($data, clone $this->objectPrototype) : null; if (is_array($this->buffer)) { $this->buffer[$this->position] = $current; } return $current; } /** * Cast result set to array of arrays * * @return array * @throws Exception\RuntimeException If any row is not castable to an array. */ public function toArray() { $return = []; foreach ($this as $row) { $return[] = $this->hydrator->extract($row); } return $return; } }