From dad313752882041d833ee96cb927fd4ba0acd6f6 Mon Sep 17 00:00:00 2001 From: romanb Date: Thu, 7 Feb 2008 22:21:18 +0000 Subject: [PATCH] cleanups --- lib/Doctrine/Hydrator.php | 2 + lib/Doctrine/Record.php | 106 ++++------- lib/Doctrine/Record/Abstract.php | 297 ++----------------------------- 3 files changed, 48 insertions(+), 357 deletions(-) diff --git a/lib/Doctrine/Hydrator.php b/lib/Doctrine/Hydrator.php index 7d8b6c773..8ec8f5cf6 100644 --- a/lib/Doctrine/Hydrator.php +++ b/lib/Doctrine/Hydrator.php @@ -270,6 +270,8 @@ class Doctrine_Hydrator extends Doctrine_Hydrator_Abstract end($coll); $prev[$dqlAlias] =& $coll[key($coll)]; } + } else if ($coll instanceof Doctrine_Record) { + $prev[$dqlAlias] = $coll; } else if (count($coll) > 0) { $prev[$dqlAlias] = $coll->getLast(); } else if (isset($prev[$dqlAlias])) { diff --git a/lib/Doctrine/Record.php b/lib/Doctrine/Record.php index de7919170..2c338da9f 100644 --- a/lib/Doctrine/Record.php +++ b/lib/Doctrine/Record.php @@ -236,8 +236,8 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * * @return void */ - public function setUp() - { } + /*public function setUp() + { }*/ /** * construct @@ -433,6 +433,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * * @param boolean $overwrite whether or not to overwrite the already set values * @return boolean + * @todo Maybe better placed in the Mapper? */ public function assignDefaultValues($overwrite = false) { @@ -462,6 +463,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * * @param array $data data array to be cleaned * @return array $tmp values cleaned from data + * @todo Maybe better placed in the Mapper? */ public function cleanData(&$data) { @@ -503,6 +505,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * * @param boolean $exists whether or not this record exists in persistent data store * @return void + * @todo Maybe better placed in the Mapper? */ private function prepareIdentifiers($exists = true) { @@ -692,6 +695,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * @throws Doctrine_Record_Exception When the refresh operation fails (when the database row * this record represents does not exist anymore) * @return boolean + * @todo Logic is better placed in the Mapper. Just forward to the mapper. */ public function refresh($deep = false) { @@ -741,6 +745,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * if set, this method only refreshes the specified related component * * @return Doctrine_Record this object + * @todo Logic is better placed in the Mapper. Just forward to the mapper. */ public function refreshRelated($name = null) { @@ -766,27 +771,18 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * getTable - * returns the table object for this record + * Gets the current property values. * - * @return Doctrine_Table a Doctrine_Table object - */ - public function getTable() - { - return $this->_table; - } - - /** - * getData - * return all the internal data - * - * @return array an array containing all the properties + * @return array The current properties and their values. */ public function getData() { return $this->_data; } + /** + * + */ public function getValues() { return $this->_values; @@ -870,8 +866,8 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } catch (Doctrine_Relation_Exception $e) { //echo $this->_domainClassName . "
"; //var_dump($this->_values); - echo $e->getTraceAsString(); - echo "

"; + //echo $e->getTraceAsString(); + //echo "

"; foreach ($this->_table->getFilters() as $filter) { if (($value = $filter->filterGet($this, $fieldName, $value)) !== null) { return $value; @@ -889,6 +885,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * @param string $name the name of the mapped value * @param mixed $value mixed value to be mapped * @return void + * @todo Maybe better placed in the Mapper. */ public function mapValue($name, $value) { @@ -967,7 +964,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * DESCRIBE WHAT THIS METHOD DOES, PLEASE! + * Sets a related component. * @todo Refactor. What about composite keys? */ private function _coreSetRelated($name, $value) @@ -1144,19 +1141,6 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count return $a; } - /** - * REDUNDANT? - */ - /*public function modifiedFields() - { - $a = array(); - - foreach ($this->_modified as $k => $v) { - $a[$v] = $this->_data[$v]; - } - return $a; - }*/ - /** * getPrepared * @@ -1166,6 +1150,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * @param array $array * @return array * @todo What about a little bit more expressive name? getPreparedData? + * @todo Maybe not the best place here ... need to think about it. */ public function getPrepared(array $array = array()) { @@ -1212,6 +1197,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } // @todo cleanup + // populates the discriminator field in Single & Class Table Inheritance if ($this->_table->getInheritanceType() == Doctrine::INHERITANCETYPE_JOINED || $this->_table->getInheritanceType() == Doctrine::INHERITANCETYPE_SINGLE_TABLE) { $discCol = $this->_table->getInheritanceOption('discriminatorColumn'); @@ -1224,7 +1210,6 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } } - return $a; } @@ -1235,6 +1220,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * Implementation of the Countable interface. * * @return integer the number of columns in this record + * @todo IMHO this is unintuitive. */ public function count() { @@ -1242,18 +1228,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * alias for count() - * - * @return integer the number of columns in this record - */ - public function columnCount() - { - return $this->count(); - } - - /** - * toArray - * returns the record as an array + * Creates an array representation of the object's data. * * @param boolean $deep - Return also the relations * @return array @@ -1399,10 +1374,9 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * exists - * returns true if this record is persistent, otherwise false + * Checks whether the entity already has a persistent state. * - * @return boolean + * @return boolean TRUE if the object is managed and has persistent state, FALSE otherwise. */ public function exists() { @@ -1411,10 +1385,10 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * isModified - * returns true if this record was modified, otherwise false + * Checks whether the entity has been modified since it was last synchronized + * with the database. * - * @return boolean + * @return boolean TRUE if the object has been modified, FALSE otherwise. */ public function isModified() { @@ -1424,6 +1398,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count /** * method for checking existence of properties and Doctrine_Record references + * * @param mixed $name name of the property or reference * @return boolean */ @@ -1445,10 +1420,9 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * deletes this data access object and all the related composites - * this operation is isolated by a transaction + * Deletes the entity. * - * this event can be listened by the onPreDelete and onDelete listeners + * This event can be listened by the onPreDelete and onDelete listeners * * @return boolean true on success, false on failure */ @@ -1458,8 +1432,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count } /** - * copy - * returns a copy of this object + * Creates a copy of the entity. * * @return Doctrine_Record */ @@ -1502,6 +1475,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * * @param integer $id * @return void + * @todo Not sure this is the right place here. */ public function assignIdentifier($id = false) { @@ -1544,7 +1518,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * returns the value of autoincremented primary key of this object (if any) * * @return integer - * @todo Better name? + * @todo Better name? Not sure this is the right place here. */ final public function getIncremented() { @@ -1556,19 +1530,6 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count return $id; } - /** - * getLast - * this method is used internally be Doctrine_Query - * it is needed to provide compatibility between - * records and collections - * - * @return Doctrine_Record - */ - public function getLast() - { - return $this; - } - /** * hasRefence * @param string $name @@ -1602,7 +1563,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count if (isset($this->_references[$name])) { return $this->_references[$name]; } - throw new Doctrine_Record_Exception("Unknown reference $name"); + throw new Doctrine_Record_Exception("Unknown reference $name."); } /** @@ -1667,6 +1628,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * getter for node assciated with this record * * @return mixed if tree returns Doctrine_Node otherwise returns false + * @todo Should go to the NestedSet Behavior plugin. */ public function getNode() { @@ -1691,6 +1653,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count * @throws Doctrine_Record_Exception if given version does not exist * @param integer $version an integer > 1 * @return Doctrine_Record this object + * @todo Should go to the Versionable plugin. */ public function revert($version) { @@ -1875,6 +1838,7 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count /** * used to delete node from tree - MUST BE USE TO DELETE RECORD IF TABLE ACTS AS TREE * + * @todo Should go to the NestedSet Behavior plugin. */ public function deleteNode() { diff --git a/lib/Doctrine/Record/Abstract.php b/lib/Doctrine/Record/Abstract.php index 64fb76eef..bf137c198 100644 --- a/lib/Doctrine/Record/Abstract.php +++ b/lib/Doctrine/Record/Abstract.php @@ -53,19 +53,24 @@ abstract class Doctrine_Record_Abstract extends Doctrine_Access * @deprecated */ public function setUp() - {} - - public static function initMapping(Doctrine_MetadataClass $class) {} - /** * getTable - * returns the associated table object + * returns the table object for this record * - * @return Doctrine_Table the associated table object + * @return Doctrine_Table a Doctrine_Table object + * @deprecated */ public function getTable() + { + return $this->getClassMetadata(); + } + + /** + * Gets the ClassMetadata object that describes the entity class. + */ + public function getClassMetadata() { return $this->_table; } @@ -142,284 +147,4 @@ abstract class Doctrine_Record_Abstract extends Doctrine_Access $this->_table->setAttribute($attr, $value); } } - - - /* THE FOLLOWING STUFF WILL ALL BE REMOVED SOON */ - - public function setTableName($tableName) - { - $this->_table->setTableName($tableName); - } - - /** - * index - * defines or retrieves an index - * if the second parameter is set this method defines an index - * if not this method retrieves index named $name - * - * @param string $name the name of the index - * @param array $definition the definition array - * @return mixed - */ - public function index($name, array $definition = array()) - { - if ( ! $definition) { - return $this->_table->getIndex($name); - } else { - return $this->_table->addIndex($name, $definition); - } - } - - /** - * - * @deprecated Use setSubclasses() - */ - public function setInheritanceMap($map) - { - $this->_table->setOption('inheritanceMap', $map); - } - - public function setSubclasses($map) - { - //echo "setting inheritance map on " . get_class($this) . "
"; - $this->_table->setOption('inheritanceMap', $map); - $this->_table->setOption('subclasses', array_keys($map)); - $this->_table->setInheritanceType(Doctrine::INHERITANCETYPE_SINGLE_TABLE); - } - - /** - * option - * sets or retrieves an option - * - * @see Doctrine_Table::$options availible options - * @param mixed $name the name of the option - * @param mixed $value options value - * @return mixed - */ - public function option($name, $value = null) - { - if ($value === null) { - if (is_array($name)) { - foreach ($name as $k => $v) { - $this->_table->setOption($k, $v); - } - } else { - return $this->_table->getOption($name); - } - } else { - $this->_table->setOption($name, $value); - } - } - - /** - * DEPRECATED ALSO? - REMOVE SOON - * - * ownsOne - * binds One-to-One composite relation - * - * @param string $componentName the name of the related component - * @param string $options relation options - * @see Doctrine_Relation::_$definition - * @return Doctrine_Record this object - */ - public function ownsOne() - { - throw new Doctrine_Exception( - 'ownsMany() has been deprecated. ' . - 'To create a composite relationship, use hasMany() with onDelete CASCADE option.' - ); - } - - /** - * DEPRECATED - REMOVE SOON - * - * ownsMany - * binds One-to-Many / Many-to-Many composite relation - * - * @param string $componentName the name of the related component - * @param string $options relation options - * @see Doctrine_Relation::_$definition - * @return Doctrine_Record this object - */ - public function ownsMany() - { - throw new Doctrine_Exception( - 'ownsOne() has been deprecated. ' . - 'To create a composite relationship, use hasOne() with onDelete CASCADE option.' - ); - } - - /** - * hasOne - * binds One-to-One aggregate relation - * - * @param string $componentName the name of the related component - * @param string $options relation options - * @see Doctrine_Relation::_$definition - * @return Doctrine_Record this object - */ - public function hasOne() - { - $this->_table->bind(func_get_args(), Doctrine_Relation::ONE_AGGREGATE); - - return $this; - } - - /** - * hasMany - * binds One-to-Many / Many-to-Many aggregate relation - * - * @param string $componentName the name of the related component - * @param string $options relation options - * @see Doctrine_Relation::_$definition - * @return Doctrine_Record this object - */ - public function hasMany() - { - $this->_table->bind(func_get_args(), Doctrine_Relation::MANY_AGGREGATE); - - return $this; - } - - /** - * hasColumn - * sets a column definition - * - * @param string $name - * @param string $type - * @param integer $length - * @param mixed $options - * @return void - */ - public function hasColumn($name, $type, $length = 2147483647, $options = "") - { - $this->_table->setColumn($name, $type, $length, $options); - } - - /** - * hasColumns - * - * @param array $definitions - * @return void - */ - public function hasColumns(array $definitions) - { - foreach ($definitions as $name => $options) { - $this->hasColumn($name, $options['type'], $options['length'], $options); - } - } - - /** - * loadTemplate - * - * @param string $template - */ - public function loadTemplate($template, array $options = array()) - { - $this->actAs($template, $options); - } - - /** - * bindQueryParts - * binds query parts to given component - * - * @param array $queryParts an array of pre-bound query parts - * @return Doctrine_Record this object - */ - public function bindQueryParts(array $queryParts) - { - if (!$this->_table) { - try { - throw new Exception(); - } catch (Exception $e) { - echo $e->getTraceAsString() . "
"; - } - } - $this->_table->bindQueryParts($queryParts); - - return $this; - } - - public function loadGenerator(Doctrine_Record_Generator $generator) - { - $generator->initialize($this->_table); - - $this->_table->addGenerator($generator, get_class($generator)); - } - - - /** - * actAs - * loads the given plugin - * - * @param mixed $tpl - * @param array $options - */ - public function actAs($tpl, array $options = array()) - { - if ( ! is_object($tpl)) { - if (class_exists($tpl, true)) { - $tpl = new $tpl($options); - } else { - $className = 'Doctrine_Template_' . $tpl; - - if ( ! class_exists($className, true)) { - throw new Doctrine_Record_Exception("Couldn't load plugin."); - } - - - $tpl = new $className($options); - } - } - - if ( ! ($tpl instanceof Doctrine_Template)) { - throw new Doctrine_Record_Exception('Loaded plugin class is not an instance of Doctrine_Template.'); - } - - $className = get_class($tpl); - - $this->_table->addTemplate($className, $tpl); - - $tpl->setTable($this->_table); - $tpl->setUp(); - $tpl->setTableDefinition(); - - return $this; - } - - /** - * - * - */ - public function setInheritanceType($type, array $options = null) - { - if ($type == Doctrine::INHERITANCETYPE_SINGLE_TABLE) { - $this->setSubclasses($options); - } else if ($type == Doctrine::INHERITANCETYPE_JOINED) { - $this->setSubclasses($options); - } else if ($type == Doctrine::INHERITANCETYPE_TABLE_PER_CLASS) { - // concrete table inheritance ... - } - $this->_table->setInheritanceType($type); - } - - /** - * check - * adds a check constraint - * - * @param mixed $constraint either a SQL constraint portion or an array of CHECK constraints - * @param string $name optional constraint name - * @return Doctrine_Record this object - */ - public function check($constraint, $name = null) - { - if (is_array($constraint)) { - foreach ($constraint as $name => $def) { - $this->_table->addCheckConstraint($def, $name); - } - } else { - $this->_table->addCheckConstraint($constraint, $name); - } - return $this; - } }