. */ /** * Doctrine_Hydrator_Abstract * * @package Doctrine * @subpackage Hydrate * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.com * @since 1.0 * @version $Revision: 3192 $ * @author Konsta Vesterinen */ abstract class Doctrine_Hydrator_Abstract extends Doctrine_Locator_Injectable { /** * @var array $_aliasMap two dimensional array containing the map for query aliases * Main keys are component aliases * * table table object associated with given alias * * relation the relation object owned by the parent * * parent the alias of the parent * * agg the aggregates of this component * * map the name of the column / aggregate value this * component is mapped to a collection */ protected $_queryComponents = array(); /** * The current hydration mode. */ protected $_hydrationMode = Doctrine::HYDRATE_RECORD; /** * constructor * * @param Doctrine_Connection|null $connection */ public function __construct() {} /** * Sets the fetchmode. * * @param integer $fetchmode One of the Doctrine::HYDRATE_* constants. */ public function setHydrationMode($hydrationMode) { $this->_hydrationMode = $hydrationMode; } /** * setAliasMap * sets the whole component alias map * * @param array $map alias map * @return Doctrine_Hydrate this object */ public function setQueryComponents(array $queryComponents) { $this->_queryComponents = $queryComponents; } /** * getAliasMap * returns the component alias map * * @return array component alias map */ public function getQueryComponents() { return $this->_queryComponents; } /** * parseData * parses the 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. * * @todo: Can we refactor this function so that it is not so long and * nested? * * @param mixed $stmt * @return array */ abstract public function hydrateResultSet($stmt, $tableAliases, $hydrationMode = null); }