![]() 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 function in_array; use function is_array; use function is_object; use function method_exists; class ResultSet extends AbstractResultSet { public const TYPE_ARRAYOBJECT = 'arrayobject'; public const TYPE_ARRAY = 'array'; /** * Allowed return types * * @var array */ protected $allowedReturnTypes = [ self::TYPE_ARRAYOBJECT, self::TYPE_ARRAY, ]; /** @var ArrayObject */ protected $arrayObjectPrototype; /** * Return type to use when returning an object from the set * * @var ResultSet::TYPE_ARRAYOBJECT|ResultSet::TYPE_ARRAY */ protected $returnType = self::TYPE_ARRAYOBJECT; /** * Constructor * * @param string $returnType * @param null|ArrayObject $arrayObjectPrototype */ public function __construct($returnType = self::TYPE_ARRAYOBJECT, $arrayObjectPrototype = null) { if (in_array($returnType, $this->allowedReturnTypes, true)) { $this->returnType = $returnType; } else { $this->returnType = self::TYPE_ARRAYOBJECT; } if ($this->returnType === self::TYPE_ARRAYOBJECT) { $this->setArrayObjectPrototype($arrayObjectPrototype ?: new ArrayObject([], ArrayObject::ARRAY_AS_PROPS)); } } /** * Set the row object prototype * * @param ArrayObject $arrayObjectPrototype * @return $this Provides a fluent interface * @throws Exception\InvalidArgumentException */ public function setArrayObjectPrototype($arrayObjectPrototype) { if ( ! is_object($arrayObjectPrototype) || ( ! $arrayObjectPrototype instanceof ArrayObject && ! method_exists($arrayObjectPrototype, 'exchangeArray') ) ) { throw new Exception\InvalidArgumentException( 'Object must be of type ArrayObject, or at least implement exchangeArray' ); } $this->arrayObjectPrototype = $arrayObjectPrototype; return $this; } /** * Get the row object prototype * * @return ArrayObject */ public function getArrayObjectPrototype() { return $this->arrayObjectPrototype; } /** * Get the return type to use when returning objects from the set * * @return string */ public function getReturnType() { return $this->returnType; } /** * @return array|ArrayObject|null */ public function current() { $data = parent::current(); if ($this->returnType === self::TYPE_ARRAYOBJECT && is_array($data)) { /** @var ArrayObject $ao */ $ao = clone $this->arrayObjectPrototype; if ($ao instanceof ArrayObject || method_exists($ao, 'exchangeArray')) { $ao->exchangeArray($data); } return $ao; } return $data; } }