. */ #namespace Doctrine::ORM::Internal::Hydration; /** * Base class for all hydrators (ok, we got only 1 currently). * * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.org * @since 1.0 * @version $Revision: 3192 $ * @author Konsta Vesterinen * @author Roman Borschel */ abstract class Doctrine_ORM_Internal_Hydration_AbstractHydrator { /** * @var array $_queryComponents * * Two dimensional array containing the map for query aliases. Main keys are component aliases. * * table Table object associated with given alias. * relation Relation object owned by the parent. * parent Alias of the parent. * agg Aggregates of this component. * map Name of the column / aggregate value this component is mapped to a collection. */ protected $_queryComponents = array(); /** * @var array Table alias map. Keys are SQL aliases and values DQL aliases. */ protected $_tableAliasMap = array(); /** * The current hydration mode. */ protected $_hydrationMode = Doctrine::HYDRATE_RECORD; protected $_nullObject; protected $_em; /** * constructor * * @param Doctrine_Connection|null $connection */ public function __construct(Doctrine_EntityManager $em) { $this->_em = $em; $this->_nullObject = Doctrine_ORM_Internal_Null::$INSTANCE; } /** * setHydrationMode * * Defines the hydration process mode. * * @param integer $hydrationMode Doctrine processing mode to be used during hydration process. * One of the Doctrine::HYDRATE_* constants. */ public function setHydrationMode($hydrationMode) { $this->_hydrationMode = $hydrationMode; } /** * setQueryComponents * * Defines the mapping components. * * @param array $queryComponents Query components. */ public function setQueryComponents(array $queryComponents) { $this->_queryComponents = $queryComponents; } /** * getQueryComponents * * Gets the mapping components. * * @return array Query components. */ public function getQueryComponents() { return $this->_queryComponents; } /** * setTableAliasMap * * Defines the table aliases. * * @param array $tableAliasMap Table aliases. */ public function setTableAliasMap(array $tableAliasMap) { $this->_tableAliasMap = $tableAliasMap; } /** * getTableAliasMap * * Returns all table aliases. * * @return array Table aliases as an array. */ public function getTableAliasMap() { return $this->_tableAliasMap; } /** * hydrateResultSet * * Processes data returned by statement object. * * This is method defines the core of Doctrine object population algorithm * hence this method strives to be as fast as possible. * * The key idea is the loop over the rowset only once doing all the needed operations * within this massive loop. * * @param mixed $stmt PDOStatement * @param integer $hydrationMode Doctrine processing mode to be used during hydration process. * One of the Doctrine::HYDRATE_* constants. * @return mixed Doctrine_Collection|array */ abstract public function hydrateResultSet($parserResult); }