. */ /** * Doctrine_Hydrator_Abstract * * @package Doctrine * @subpackage Hydrate * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.phpdoctrine.org * @since 1.0 * @version $Revision: 3192 $ * @author Konsta Vesterinen */ abstract class Doctrine_Hydrator_Abstract { /** * @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; protected $_nullObject; /** * constructor * * @param Doctrine_Connection|null $connection */ public function __construct() { $this->_nullObject = Doctrine_Null::$INSTANCE; } /** * 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; } /** * hasAliasDeclaration * whether or not this object has a declaration for given component alias * * @param string $componentAlias the component alias the retrieve the declaration from * @return boolean */ public function hasAliasDeclaration($componentAlias) { return isset($this->_queryComponents[$componentAlias]); } /** * getAliasDeclaration * get the declaration for given component alias * * @param string $componentAlias the component alias the retrieve the declaration from * @return array the alias declaration * @deprecated */ public function getAliasDeclaration($componentAlias) { return $this->getQueryComponent($componentAlias); } /** * getQueryComponent * get the declaration for given component alias * * @param string $componentAlias the component alias the retrieve the declaration from * @return array the alias declaration */ public function getQueryComponent($componentAlias) { if ( ! isset($this->_queryComponents[$componentAlias])) { throw new Doctrine_Query_Exception('Unknown component alias ' . $componentAlias); } return $this->_queryComponents[$componentAlias]; } /** * 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); }