Author: ts
Date: Tue Jan 8 14:46:55 2008
New Revision: 7104
Log:
- Doc updates and fixes.
- Removed some commented code.
Modified:
trunk/PersistentObject/src/persistent_session.php
Modified: trunk/PersistentObject/src/persistent_session.php
==============================================================================
--- trunk/PersistentObject/src/persistent_session.php [iso-8859-1] (original)
+++ trunk/PersistentObject/src/persistent_session.php [iso-8859-1] Tue Jan 8
14:46:55 2008
@@ -37,7 +37,7 @@
* Constructs a new persistent session that works on the database $db.
*
* The $manager provides valid persistent object definitions to the
- * session.
+ * session. The $db will be used to perform all database operations.
*
* @param ezcDbHandler $db
* @param ezcPersistentDefinitionManager $manager
@@ -51,9 +51,12 @@
/**
* Sets the property $name to $value.
*
- * @throws ezcBasePropertyNotFoundException if the property does not exist.
+ * @throws ezcBasePropertyNotFoundException
+ * if the property does not exist.
+ *
* @param string $name
* @param mixed $value
+ *
* @ignore
*/
public function __set( $name, $value )
@@ -74,9 +77,12 @@
/**
* Returns the property $name.
*
- * @throws ezcBasePropertyNotFoundException if the property does not exist.
+ * @throws ezcBasePropertyNotFoundException
+ * if the property does not exist.
+ *
* @param string $name
* @return mixed
+ *
* @ignore
*/
public function __get( $name )
@@ -97,18 +103,20 @@
/**
* Deletes the persistent object $pObject.
*
- * This method will perform a DELETE query based on the identifier
- * of the persistent object.
- * After delete() the identifier in $pObject will be reset to null.
- * It is possible to save() $pObject afterwords. The object will then
- * be stored with a new id.
- * If you defined relations for the given object, these will be checked
- * to be defined as cascading. If cascading is configured, the related
- * objects with this relation will be deleted, too.
+ * This method will perform a DELETE query based on the identifier of the
+ * persistent object $pObject. After delete() the ID property of $pObject
+ * will be reset to null. It is possible to [EMAIL PROTECTED] save()}
$pObject
+ * afterwards. $pObject will then be stored with a new ID.
+ *
+ * If you defined relations for the given object, these will be checked to
+ * be defined as cascading. If cascading is configured, the related objects
+ * with this relation will be deleted, too.
*
* Relations that support cascading are:
- * - [EMAIL PROTECTED] ezcPersistenOneToManyRelation}
- * - [EMAIL PROTECTED] ezcPersistenOneToOne}
+ * <ul>
+ * <li>[EMAIL PROTECTED] ezcPersistenOneToManyRelation}</li>
+ * <li>[EMAIL PROTECTED] ezcPersistenOneToOne}</li>
+ * </ul>
*
* @throws ezcPersistentDefinitionNotFoundxception
* if $the object is not recognized as a persistent object.
@@ -181,14 +189,14 @@
/**
* Perform the cascading of deletes on a specific relation.
- * This method checks a given relation of a given object for necessary
+ *
+ * This method checks a given $relation of a given $object for necessary
* actions on a cascaded delete and performs them.
*
* @param object $object The persistent object.
* @param string $relatedClass The class of the related
persistent
* object.
* @param ezcPersistentRelation $relation The relation to check.
- * @return void
*
* @todo Revise cascading code. So far it sends 1 delete statement per
* object but we can also collect them table wise and send just 1
@@ -243,8 +251,11 @@
* $session->deleteFromQuery( $q );
* </code>
*
- * @throws ezcPersistentObjectException if there is no such persistent
class.
+ * @throws ezcPersistentObjectException
+ * if there is no such persistent class.
+ *
* @param string $class
+ *
* @return ezcQueryDelete
*/
public function createDeleteQuery( $class )
@@ -262,7 +273,7 @@
/**
* Deletes persistent objects using the query $query.
*
- * The $query should be created using createDeleteQuery().
+ * The $query should be created using [EMAIL PROTECTED]
createDeleteQuery()}.
*
* Currently this method only executes the provided query. Future
* releases PersistentSession may introduce caching of persistent objects.
@@ -271,9 +282,10 @@
* advisable to always use this method when running custom delete queries
on
* persistent objects.
*
- * @throws ezcPersistentQueryException if the delete query failed.
+ * @throws ezcPersistentQueryException
+ * if the delete query failed.
+ *
* @param ezcQueryDelete $query
- * @return void
*/
public function deleteFromQuery( ezcQueryDelete $query )
{
@@ -294,8 +306,11 @@
* The query is initialized to update the correct table and
* it is only neccessary to set the correct values.
*
- * @throws ezcPersistentDefinitionNotFoundException if there is no such
persistent class.
+ * @throws ezcPersistentDefinitionNotFoundException
+ * if there is no such persistent class.
+ *
* @param string $class
+ *
* @return ezcQueryUpdate
*/
public function createUpdateQuery( $class )
@@ -322,9 +337,10 @@
* advisable to always use this method when running custom delete queries
on
* persistent objects.
*
- * @throws ezcPersistentQueryException if the update query failed.
+ * @throws ezcPersistentQueryException
+ * if the update query failed.
+ *
* @param ezcQueryUpdate $query
- * @return void
*/
public function updateFromQuery( ezcQueryUpdate $query )
{
@@ -342,7 +358,9 @@
/**
* Returns a select query for the given persistent object $class.
*
- * The query is initialized to fetch all columns from the correct table.
+ * The query is initialized to fetch all columns from the correct table and
+ * has correct alias mappings between columns and property names of the
+ * persistent $class.
*
* Example:
* <code>
@@ -350,8 +368,11 @@
* $allPersons = $session->find( $q, 'Person' );
* </code>
*
- * @throws ezcPersistentObjectException if there is no such persistent
class.
+ * @throws ezcPersistentObjectException
+ * if there is no such persistent class.
+ *
* @param string $class
+ *
* @return ezcQuerySelect
*/
public function createFindQuery( $class )
@@ -370,14 +391,18 @@
/**
* Returns the result of the query $query as a list of objects.
*
+ * Returns the persistent objects found for $class using the submitted
+ * $query. $query should be created using [EMAIL PROTECTED]
createFindQuery()} to
+ * ensure correct alias mappings and can be manipulated as needed.
+ *
* Example:
* <code>
* $q = $session->createFindQuery( 'Person' );
* $allPersons = $session->find( $q, 'Person' );
* </code>
*
- * If you are retrieving large result set, consider using findIterator()
- * instead.
+ * If you are retrieving large result set, consider using [EMAIL PROTECTED]
+ * findIterator()} instead.
*
* Example:
* <code>
@@ -390,11 +415,15 @@
* }
* </code>
*
- * @throws ezcPersistentDefinitionNotFoundException if there is no such
persistent class.
- * @throws ezcPersistentQueryException if the find query failed
+ * @throws ezcPersistentDefinitionNotFoundException
+ * if there is no such persistent class.
+ * @throws ezcPersistentQueryException
+ * if the find query failed.
+ *
* @param ezcQuerySelect $query
* @param string $class
- * @return array(object)
+ *
+ * @return array(object($class))
*/
public function find( ezcQuerySelect $query, $class )
{
@@ -423,11 +452,13 @@
}
/**
- * Returns the related objects of a given class for an object.
+ * Returns the related objects of a given $relatedClass for an $object.
+ *
* This method returns the related objects of type $relatedClass for the
- * object $object. This method (in contrast to [EMAIL PROTECTED]
getRelatedObject()})
- * always returns an array of result objects, no matter if only 1 object
- * was found (e.g. [EMAIL PROTECTED] ezcPersistentManyToOneRelation}).
+ * given $object. This method (in contrast to [EMAIL PROTECTED]
getRelatedObject()})
+ * always returns an array of found objects, no matter if only 1 object
+ * was found (e.g. [EMAIL PROTECTED] ezcPersistentManyToOneRelation}),
none or several
+ * ([EMAIL PROTECTED] ezcPersistentManyToManyRelation}).
*
* Example:
* <code>
@@ -437,12 +468,16 @@
* </code>
*
* Relations that should preferably be used with this method are:
- * - [EMAIL PROTECTED] ezcPersistentOneToManyRelation}
- * - [EMAIL PROTECTED] ezcPersistentManyToManyRelation}
- *
- * @param mixed $object The object to fetch related objects for.
- * @param mixed $relatedClass The class of the related objects to fetch.
- * @return array(int=>object)
+ * <ul>
+ * <li>[EMAIL PROTECTED] ezcPersistentOneToManyRelation}</li>
+ * <li>[EMAIL PROTECTED] ezcPersistentManyToManyRelation}</li>
+ * </ul>
+ * For other relation types [EMAIL PROTECTED] getRelatedObject()} is
recommended.
+ *
+ * @param object $object
+ * @param string $relatedClass
+ *
+ * @return array(int=>object($relatedClass))
*
* @throws ezcPersistentRelationNotFoundException
* if the given $object does not have a relation to $relatedClass.
@@ -454,11 +489,14 @@
}
/**
- * Returns the related object of a given class for an object.
+ * Returns the related object of a given $relatedClass for an $object.
+ *
* This method returns the related object of type $relatedClass for the
* object $object. This method (in contrast to [EMAIL PROTECTED]
getRelatedObjects()})
- * always a single result object, no matter if more objects could be found
- * (e.g. [EMAIL PROTECTED] ezcPersistentOneToManyRelation}).
+ * always returns a single result object, no matter if more related objects
+ * could be found (e.g. [EMAIL PROTECTED]
ezcPersistentOneToManyRelation}). If no
+ * related object is found, an exception is thrown, while [EMAIL PROTECTED]
+ * getRelatedObjects()} just returns an empty array in this case.
*
* Example:
* <code>
@@ -468,12 +506,16 @@
* </code>
*
* Relations that should preferably be used with this method are:
- * - {ezcPersistentManyToOneRelation}
- * - {ezcPersistentOneToOneRelation}
- *
- * @param object $object The object to fetch related objects for.
- * @param string $relatedClass The class of the related objects to fetch.
- * @return object
+ * <ul>
+ * <li>[EMAIL PROTECTED] ezcPersistentManyToOneRelation}</ li>
+ * <li>[EMAIL PROTECTED] ezcPersistentOneToOneRelation}</li>
+ * </ul>
+ * For other relation types [EMAIL PROTECTED] getRelatedObjects()} is
recommended.
+ *
+ * @param object $object
+ * @param string $relatedClass
+ *
+ * @return object($relatedClass)
*
* @throws ezcPersistentRelationNotFoundException
* if the given $object does not have a relation to $relatedClass.
@@ -494,12 +536,15 @@
/**
* Returns the base query for retrieving related objects.
+ *
* See [EMAIL PROTECTED] getRelatedObject()} and [EMAIL PROTECTED]
getRelatedObjects()}. Can be
* modified by additional where conditions and simply be used with
- * [EMAIL PROTECTED] find()} and the related class name.
- *
- * @param object $object Object to find related objects for.
- * @param string $relatedClass Class of the related objects to find.
+ * [EMAIL PROTECTED] find()} and the related class name, to retrieve a
sub-set of
+ * related objects.
+ *
+ * @param object $object
+ * @param string $relatedClass
+ *
* @return ezcDbSelectQuery
*
* @throws ezcPersistentRelationNotFoundException
@@ -557,17 +602,20 @@
/**
* Create a relation between $object and $relatedObject.
- * This method is used to create a relation between the given source
$object
- * and the desired $relatedObject. The related object is not stored in the
- * database automatically, only the desired properties are set. An
- * exception is [EMAIL PROTECTED], where the
- * relation record is stored automatically.
- *
- * @param object $object The object to create a relation from.
- * @param object $relatedObject The object to create a relation to.
+ *
+ * This method is used to create a relation between the given source
+ * $object and the desired $relatedObject. The related object is not stored
+ * in the database automatically, only the desired properties are set. An
+ * exception is [EMAIL PROTECTED], where the relation
+ * record is stored automatically and there is no need to store
+ * $relatedObject explicitly after establishing the relation.
+ *
+ * @param object $object
+ * @param object $relatedObject
*
* @throws ezcPersistentRelationOperationNotSupportedException
- * if a relation to create is marked as "reverse".
+ * if a relation to create is marked as "reverse" [EMAIL PROTECTED]
+ * ezcPersistentRelation->reverse}.
* @throws ezcPersistentRelationNotFoundException
* if the deisred relation is not defined.
*/
@@ -646,11 +694,12 @@
/**
* Removes the relation between $object and $relatedObject.
- * This method is used to delete an existing relation between 2 objects.
Like
- * [EMAIL PROTECTED] addRelatedObject} this method does not store the
related object
- * after removing its relation properties (unset), except for
- * [EMAIL PROTECTED] ezcPersistentManyToManyRelation}s, for which the
relation record
- * is deleted from the database.
+ *
+ * This method is used to delete an existing relation between 2 objects.
+ * Like [EMAIL PROTECTED] addRelatedObject()} this method does not store
the related
+ * object after removing its relation properties (unset), except for
[EMAIL PROTECTED]
+ * ezcPersistentManyToManyRelation()}s, for which the relation record is
+ * deleted from the database.
*
* @param object $object Source object of the relation.
* @param object $relatedObject Related object.
@@ -726,22 +775,29 @@
}
/**
- * Returns the result of the query $query for the class $class
- * as an object iterator.
- *
- * This method is similar to find() but returns an iterator
- * instead of a list of objects. This is useful if you are going
- * to loop over the objects and just need them one at the time.
- * Because you only instantiate one object is is faster than find().
- *
- * Note that if you do not loop over the complete result set you must
- * call flush() on the iterator before issuing another query.
- *
- * @throws ezcPersistentDefinitionNotFoundException if there is no such
persistent class.
- * @throws ezcPersistentQueryException if the find query failed
+ * Returns the result of $query for the $class as an iterator.
+ *
+ * This method is similar to [EMAIL PROTECTED] find()} but returns an
[EMAIL PROTECTED]
+ * ezcPersistentFindIterator} instead of an array of objects. This is
+ * useful if you are going to loop over the objects and just need them one
+ * at the time. Because you only instantiate one object it is faster than
+ * [EMAIL PROTECTED] find()}. In addition, only 1 record is retrieved from
the
+ * database in each iteration, which may reduce the data transfered between
+ * the database and PHP, if you iterate only through a small subset of the
+ * affected records.
+ *
+ * Note that if you do not loop over the complete result set you must call
+ * [EMAIL PROTECTED] ezcPersistentFindIterator::flush()} before issuing
another query.
+ *
+ * @throws ezcPersistentDefinitionNotFoundException
+ * if there is no such persistent class.
+ * @throws ezcPersistentQueryException
+ * if the find query failed.
+ *
* @param ezcQuerySelect $query
* @param string $class
- * @return Iterator
+ *
+ * @return ezcPersistentFindIterator
*/
public function findIterator( ezcQuerySelect $query, $class )
{
@@ -761,10 +817,14 @@
/**
* Returns the persistent object of class $class with id $id.
*
- * @throws ezcPersistentObjectException if the object is not available.
- * @throws ezcPersistentObjectException if there is no such persistent
class.
+ * @throws ezcPersistentObjectException
+ * if the object is not available.
+ * @throws ezcPersistentObjectException
+ * if there is no such persistent class.
+ *
* @param string $class
* @param int $id
+ *
* @return object
*/
public function load( $class, $id )
@@ -778,12 +838,12 @@
/**
* Returns the persistent object of class $class with id $id.
*
- * This method is equivalent to load() except that it returns
- * null instead of throwing an exception if the object does not
- * exist.
+ * This method is equivalent to [EMAIL PROTECTED] load()} except that it
returns null
+ * instead of throwing an exception if the object does not exist.
*
* @param string $class
* @param int $id
+ *
* @return object|null
*/
public function loadIfExists( $class, $id )
@@ -806,12 +866,15 @@
* The class of the persistent object to load is determined by the class
* of $pObject.
*
- * @throws ezcPersistentObjectException if the object is not available.
- * @throws ezcPersistentDefinitionNotFoundException if $pObject is not of
a valid persistent object type.
- * @throws ezcPersistentQueryException if the find query failed
+ * @throws ezcPersistentObjectException
+ * if the object is not available.
+ * @throws ezcPersistentDefinitionNotFoundException
+ * if $pObject is not of a valid persistent object type.
+ * @throws ezcPersistentQueryException
+ * if the find query failed.
+ *
* @param object $pObject
* @param int $id
- * @return void
*/
public function loadIntoObject( $pObject, $id )
{
@@ -859,15 +922,18 @@
/**
* Syncronizes the contents of $pObject with those in the database.
*
- * Note that calling this method is equavalent with calling
- * loadIntoObject on $pObject with the id of $pObject. Any
- * changes made to $pObject prior to calling refresh() will be discarded.
- *
- * @throws ezcPersistentObjectException if $pObject is not of a valid
persistent object type.
- * @throws ezcPersistentObjectException if $pObject is not persistent
already
- * @throws ezcPersistentObjectException if the select query failed.
+ * Note that calling this method is equavalent with calling [EMAIL
PROTECTED]
+ * loadIntoObject()} on $pObject with the id of $pObject. Any changes made
+ * to $pObject prior to calling refresh() will be discarded.
+ *
+ * @throws ezcPersistentObjectException
+ * if $pObject is not of a valid persistent object type.
+ * @throws ezcPersistentObjectException
+ * if $pObject is not persistent already.
+ * @throws ezcPersistentObjectException
+ * if the select query failed.
+ *
* @param object $pObject
- * @return void
*/
public function refresh( $pObject )
{
@@ -890,12 +956,17 @@
*
* The correct ID is set to $pObject.
*
- * @throws ezcPersistentObjectException if $pObject is not of a valid
persistent object type.
- * @throws ezcPersistentObjectException if $pObject is already stored to
the database.
- * @throws ezcPersistentObjectException if it was not possible to generate
a unique identifier for the new object
- * @throws ezcPersistentObjectException if the insert query failed.
+ * @throws ezcPersistentObjectException if $pObject
+ * is not of a valid persistent object type.
+ * @throws ezcPersistentObjectException if $pObject
+ * is already stored to the database.
+ * @throws ezcPersistentObjectException
+ * if it was not possible to generate a unique identifier for the
+ * new object.
+ * @throws ezcPersistentObjectException
+ * if the insert query failed.
+ *
* @param object $pObject
- * @return void
*/
public function save( $pObject )
{
@@ -908,14 +979,19 @@
* If $doPersistenceCheck is set this function will check if the object is
persistent before
* saving. If not, the check is omitted. The correct ID is set to $pObject.
*
- * @throws ezcPersistentObjectException if $pObject is not of a valid
persistent object type.
- * @throws ezcPersistentObjectException if $pObject is already stored to
the database.
- * @throws ezcPersistentObjectException if it was not possible to generate
a unique identifier for the new object
- * @throws ezcPersistentObjectException if the insert query failed.
+ * @throws ezcPersistentObjectException
+ * if $pObject is not of a valid persistent object type.
+ * @throws ezcPersistentObjectException
+ * if $pObject is already stored to the database.
+ * @throws ezcPersistentObjectException
+ * if it was not possible to generate a unique identifier for the
+ * new object.
+ * @throws ezcPersistentObjectException
+ * if the insert query failed.
+ *
* @param object $pObject
* @param bool $doPersistenceCheck
* @param ezcPersistentIdentifierGenerator $idGenerator
- * @return void
*/
private function saveInternal( $pObject, $doPersistenceCheck = true,
ezcPersistentIdentifierGenerator
$idGenerator = null )
@@ -987,15 +1063,20 @@
}
/**
- * Saves or update the persistent object $pObject to the database.
- *
- * If the object is a new object an INSERT INTO query will be executed. If
the
- * object is persistent already it will be updated with an UPDATE query.
- *
- * @throws ezcPersistentDefinitionNotFoundException if the definition of
the persistent object could not be loaded
- * @throws ezcPersistentObjectException if $pObject is not of a valid
persistent object type.
- * @throws ezcPersistentObjectException if any of the definition
requirements are not met.
- * @throws ezcPersistentObjectException if the insert or update query
failed.
+ * Saves or updates the persistent object $pObject to the database.
+ *
+ * If the object is a new object an INSERT INTO query will be executed. If
+ * the object is persistent already it will be updated with an UPDATE
+ * query.
+ *
+ * @throws ezcPersistentDefinitionNotFoundException
+ * if the definition of the persistent object could not be loaded.
+ * @throws ezcPersistentObjectException
+ * if $pObject is not of a valid persistent object type.
+ * @throws ezcPersistentObjectException
+ * if any of the definition requirements are not met.
+ * @throws ezcPersistentObjectException
+ * if the insert or update query failed.
* @param object $pObject
* @return void
*/
@@ -1100,25 +1181,6 @@
throw new ezcPersistentQueryException( $e->getMessage(), $q );
}
}
-
-// ignore this for now
- /*
- * Goes through the requirements of the array $state and and check that
the requirements
- * set in $def are met.
- *
- * Currently this method checks if a field marked as required is set to
null.
- * If this is the case this method will replace it with the default value
if present.
- * If it is not possible to meet the requirements an exception is thrown.
- *
- * @param array $row
- * @param ezcPersistentObjectDefinition $def
- * @return void
- */
-// protected function meetRequirements( array &$state,
ezcPersistentObjectDefinition $def )
-// {
-// foreach ( $state as $key => $value )
-// }
-
/**
* Returns a hash map between property and column name for the given
definition $def.
@@ -1213,7 +1275,6 @@
}
}
-
$typedState[$name] = $value;
}
return $typedState;
--
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components