test and collection cleanup
This commit is contained in:
parent
b9ecb8de4f
commit
efaaf83e17
@ -18,7 +18,7 @@
|
|||||||
*
|
*
|
||||||
* @author robo
|
* @author robo
|
||||||
*/
|
*/
|
||||||
class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serializable, ArrayAccess {
|
class Doctrine_Common_Collections_Collection implements Countable, IteratorAggregate, Serializable, ArrayAccess {
|
||||||
/**
|
/**
|
||||||
* An array containing the entries of this collection.
|
* An array containing the entries of this collection.
|
||||||
* This is the wrapped php array.
|
* This is the wrapped php array.
|
||||||
@ -205,7 +205,7 @@ class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serial
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function search(Doctrine_ORM_Entity $record)
|
public function search($record)
|
||||||
{
|
{
|
||||||
return array_search($record, $this->_data, true);
|
return array_search($record, $this->_data, true);
|
||||||
}
|
}
|
||||||
@ -287,11 +287,6 @@ class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serial
|
|||||||
*/
|
*/
|
||||||
public function add($value, $key = null)
|
public function add($value, $key = null)
|
||||||
{
|
{
|
||||||
//TODO: really only allow entities?
|
|
||||||
if ( ! $value instanceof Doctrine_ORM_Entity) {
|
|
||||||
throw new Doctrine_Record_Exception('Value variable in collection is not an instance of Doctrine_Entity.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Really prohibit duplicates?
|
// TODO: Really prohibit duplicates?
|
||||||
if (in_array($value, $this->_data, true)) {
|
if (in_array($value, $this->_data, true)) {
|
||||||
return false;
|
return false;
|
||||||
@ -306,16 +301,6 @@ class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serial
|
|||||||
$this->_data[] = $value;
|
$this->_data[] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->_hydrationFlag) {
|
|
||||||
if ($this->_backRefFieldName) {
|
|
||||||
// set back reference to owner
|
|
||||||
$value->_internalSetReference($this->_backRefFieldName, $this->_owner);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//TODO: Register collection as dirty with the UoW if necessary
|
|
||||||
$this->_changed();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,12 +336,36 @@ class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serial
|
|||||||
return new ArrayIterator($data);
|
return new ArrayIterator($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo Experiment. Waiting for 5.3 closures.
|
||||||
|
* Example usage:
|
||||||
|
*
|
||||||
|
* $map = $coll->mapElements(function($key, $entity) {
|
||||||
|
* return array($entity->id, $entity->name);
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* or:
|
||||||
|
*
|
||||||
|
* $map = $coll->mapElements(function($key, $entity) {
|
||||||
|
* return array($entity->name, strtoupper($entity->name));
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function mapElements($lambda) {
|
||||||
|
$result = array();
|
||||||
|
foreach ($this->_data as $key => $entity) {
|
||||||
|
list($key, $value) = each($lambda($key, $entity));
|
||||||
|
$result[$key] = $value;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns a string representation of this object
|
* returns a string representation of this object
|
||||||
*/
|
*/
|
||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
return Doctrine_Lib::getCollectionAsString($this);
|
return __CLASS__ . '@' . spl_object_hash($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -368,5 +377,39 @@ class Doctrine_Common_Collection implements Countable, IteratorAggregate, Serial
|
|||||||
{
|
{
|
||||||
$this->_data = array();
|
$this->_data = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Serializable implementation */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serializes the collection.
|
||||||
|
* This method is automatically called when the Collection is serialized.
|
||||||
|
*
|
||||||
|
* Part of the implementation of the Serializable interface.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function serialize()
|
||||||
|
{
|
||||||
|
$vars = get_object_vars($this);
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
|
||||||
|
return serialize($vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reconstitutes the collection object from it's serialized form.
|
||||||
|
* This method is automatically called everytime the Collection object is unserialized.
|
||||||
|
*
|
||||||
|
* Part of the implementation of the Serializable interface.
|
||||||
|
*
|
||||||
|
* @param string $serialized The serialized data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function unserialize($serialized)
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
|
@ -40,14 +40,13 @@
|
|||||||
* mapping.
|
* mapping.
|
||||||
*
|
*
|
||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||||
* @since 1.0
|
* @since 2.0
|
||||||
* @version $Revision: 4930 $
|
* @version $Revision: 4930 $
|
||||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||||
* @author Roman Borschel <roman@code-factory.org>
|
* @author Roman Borschel <roman@code-factory.org>
|
||||||
* @todo Add more typical Collection methods.
|
|
||||||
* @todo Rename to PersistentCollection
|
* @todo Rename to PersistentCollection
|
||||||
*/
|
*/
|
||||||
class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializable, ArrayAccess
|
class Doctrine_ORM_Collection extends Doctrine_Common_Collections_Collection
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The base type of the collection.
|
* The base type of the collection.
|
||||||
@ -56,14 +55,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
*/
|
*/
|
||||||
protected $_entityBaseType;
|
protected $_entityBaseType;
|
||||||
|
|
||||||
/**
|
|
||||||
* An array containing the entries of this collection.
|
|
||||||
* This is the wrapped php array.
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
protected $_data = array();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A snapshot of the collection at the moment it was fetched from the database.
|
* A snapshot of the collection at the moment it was fetched from the database.
|
||||||
* This is used to create a diff of the collection at commit time.
|
* This is used to create a diff of the collection at commit time.
|
||||||
@ -120,10 +111,10 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
/**
|
/**
|
||||||
* Creates a new persistent collection.
|
* Creates a new persistent collection.
|
||||||
*/
|
*/
|
||||||
public function __construct($entityBaseType, $keyField = null)
|
public function __construct(Doctrine_ORM_EntityManager $em, $entityBaseType, $keyField = null)
|
||||||
{
|
{
|
||||||
$this->_entityBaseType = $entityBaseType;
|
$this->_entityBaseType = $entityBaseType;
|
||||||
$this->_em = Doctrine_ORM_EntityManager::getActiveEntityManager();
|
$this->_em = $em;
|
||||||
|
|
||||||
if ($keyField !== null) {
|
if ($keyField !== null) {
|
||||||
if ( ! $this->_em->getClassMetadata($entityBaseType)->hasField($keyField)) {
|
if ( ! $this->_em->getClassMetadata($entityBaseType)->hasField($keyField)) {
|
||||||
@ -166,56 +157,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
return $this->_keyField;
|
return $this->_keyField;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Unwraps the array contained in the Collection instance.
|
|
||||||
*
|
|
||||||
* @return array The wrapped array.
|
|
||||||
*/
|
|
||||||
public function unwrap()
|
|
||||||
{
|
|
||||||
return $this->_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns the first record in the collection
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function getFirst()
|
|
||||||
{
|
|
||||||
return reset($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns the last record in the collection
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function getLast()
|
|
||||||
{
|
|
||||||
return end($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns the last record in the collection
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function end()
|
|
||||||
{
|
|
||||||
return end($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns the current key
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function key()
|
|
||||||
{
|
|
||||||
return key($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL:
|
* INTERNAL:
|
||||||
* Sets the collection owner. Used (only?) during hydration.
|
* Sets the collection owner. Used (only?) during hydration.
|
||||||
@ -258,8 +199,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
*/
|
*/
|
||||||
public function remove($key)
|
public function remove($key)
|
||||||
{
|
{
|
||||||
$removed = $this->_data[$key];
|
|
||||||
unset($this->_data[$key]);
|
|
||||||
//TODO: Register collection as dirty with the UoW if necessary
|
//TODO: Register collection as dirty with the UoW if necessary
|
||||||
//$this->_em->getUnitOfWork()->scheduleCollectionUpdate($this);
|
//$this->_em->getUnitOfWork()->scheduleCollectionUpdate($this);
|
||||||
//TODO: delete entity if shouldDeleteOrphans
|
//TODO: delete entity if shouldDeleteOrphans
|
||||||
@ -267,177 +206,7 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
$this->_em->delete($removed);
|
$this->_em->delete($removed);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
return $removed;
|
return parent::remove($key);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* __isset()
|
|
||||||
*
|
|
||||||
* @param string $name
|
|
||||||
* @return boolean whether or not this object contains $name
|
|
||||||
*/
|
|
||||||
public function __isset($key)
|
|
||||||
{
|
|
||||||
return $this->containsKey($key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* __unset()
|
|
||||||
*
|
|
||||||
* @param string $name
|
|
||||||
* @since 1.0
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function __unset($key)
|
|
||||||
{
|
|
||||||
return $this->remove($key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if an offsetExists.
|
|
||||||
*
|
|
||||||
* Part of the ArrayAccess implementation.
|
|
||||||
*
|
|
||||||
* @param mixed $offset
|
|
||||||
* @return boolean whether or not this object contains $offset
|
|
||||||
*/
|
|
||||||
public function offsetExists($offset)
|
|
||||||
{
|
|
||||||
return $this->containsKey($offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* offsetGet an alias of get()
|
|
||||||
*
|
|
||||||
* Part of the ArrayAccess implementation.
|
|
||||||
*
|
|
||||||
* @see get, __get
|
|
||||||
* @param mixed $offset
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function offsetGet($offset)
|
|
||||||
{
|
|
||||||
return $this->get($offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Part of the ArrayAccess implementation.
|
|
||||||
*
|
|
||||||
* sets $offset to $value
|
|
||||||
* @see set, __set
|
|
||||||
* @param mixed $offset
|
|
||||||
* @param mixed $value
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function offsetSet($offset, $value)
|
|
||||||
{
|
|
||||||
if ( ! isset($offset)) {
|
|
||||||
return $this->add($value);
|
|
||||||
}
|
|
||||||
return $this->set($offset, $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Part of the ArrayAccess implementation.
|
|
||||||
*
|
|
||||||
* unset a given offset
|
|
||||||
* @see set, offsetSet, __set
|
|
||||||
* @param mixed $offset
|
|
||||||
*/
|
|
||||||
public function offsetUnset($offset)
|
|
||||||
{
|
|
||||||
return $this->remove($offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether the collection contains an entity.
|
|
||||||
*
|
|
||||||
* @param mixed $key the key of the element
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
public function containsKey($key)
|
|
||||||
{
|
|
||||||
return isset($this->_data[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enter description here...
|
|
||||||
*
|
|
||||||
* @param unknown_type $entity
|
|
||||||
* @return unknown
|
|
||||||
*/
|
|
||||||
public function contains($entity)
|
|
||||||
{
|
|
||||||
return in_array($entity, $this->_data, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enter description here...
|
|
||||||
*
|
|
||||||
* @param unknown_type $otherColl
|
|
||||||
* @todo Impl
|
|
||||||
*/
|
|
||||||
public function containsAll($otherColl)
|
|
||||||
{
|
|
||||||
//...
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function search(Doctrine_ORM_Entity $record)
|
|
||||||
{
|
|
||||||
return array_search($record, $this->_data, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns a record for given key
|
|
||||||
*
|
|
||||||
* Collection also maps referential information to newly created records
|
|
||||||
*
|
|
||||||
* @param mixed $key the key of the element
|
|
||||||
* @return Doctrine_Entity return a specified record
|
|
||||||
*/
|
|
||||||
public function get($key)
|
|
||||||
{
|
|
||||||
if (isset($this->_data[$key])) {
|
|
||||||
return $this->_data[$key];
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets all keys.
|
|
||||||
* (Map method)
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getKeys()
|
|
||||||
{
|
|
||||||
return array_keys($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets all values.
|
|
||||||
* (Map method)
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getValues()
|
|
||||||
{
|
|
||||||
return array_values($this->_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of records in this collection.
|
|
||||||
*
|
|
||||||
* Implementation of the Countable interface.
|
|
||||||
*
|
|
||||||
* @return integer The number of records in the collection.
|
|
||||||
*/
|
|
||||||
public function count()
|
|
||||||
{
|
|
||||||
return count($this->_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -450,10 +219,7 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
*/
|
*/
|
||||||
public function set($key, $value)
|
public function set($key, $value)
|
||||||
{
|
{
|
||||||
if ( ! $value instanceof Doctrine_ORM_Entity) {
|
parent::set($key, $value);
|
||||||
throw new Doctrine_Collection_Exception('Value variable in set is not an instance of Doctrine_Entity');
|
|
||||||
}
|
|
||||||
$this->_data[$key] = $value;
|
|
||||||
//TODO: Register collection as dirty with the UoW if necessary
|
//TODO: Register collection as dirty with the UoW if necessary
|
||||||
$this->_changed();
|
$this->_changed();
|
||||||
}
|
}
|
||||||
@ -467,23 +233,8 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
*/
|
*/
|
||||||
public function add($value, $key = null)
|
public function add($value, $key = null)
|
||||||
{
|
{
|
||||||
if ( ! $value instanceof $this->_entityBaseType) {
|
$result = parent::add($value, $key);
|
||||||
throw new Doctrine_Exception('Invalid instance.');
|
if ( ! $result) return $result; // EARLY EXIT
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Really prohibit duplicates?
|
|
||||||
if (in_array($value, $this->_data, true)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($key)) {
|
|
||||||
if (isset($this->_data[$key])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$this->_data[$key] = $value;
|
|
||||||
} else {
|
|
||||||
$this->_data[] = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->_hydrationFlag) {
|
if ($this->_hydrationFlag) {
|
||||||
if ($this->_backRefFieldName) {
|
if ($this->_backRefFieldName) {
|
||||||
@ -507,6 +258,7 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
*/
|
*/
|
||||||
public function addAll($otherCollection)
|
public function addAll($otherCollection)
|
||||||
{
|
{
|
||||||
|
parent::addAll($otherCollection);
|
||||||
//...
|
//...
|
||||||
//TODO: Register collection as dirty with the UoW if necessary
|
//TODO: Register collection as dirty with the UoW if necessary
|
||||||
//$this->_changed();
|
//$this->_changed();
|
||||||
@ -577,75 +329,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array representation of the collection.
|
|
||||||
*
|
|
||||||
* @param boolean $deep
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function toArray($deep = false, $prefixKey = false)
|
|
||||||
{
|
|
||||||
$data = array();
|
|
||||||
foreach ($this as $key => $record) {
|
|
||||||
$key = $prefixKey ? get_class($record) . '_' .$key:$key;
|
|
||||||
$data[$key] = $record->toArray($deep, $prefixKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether the collection is empty.
|
|
||||||
*
|
|
||||||
* @return boolean TRUE if the collection is empty, FALSE otherwise.
|
|
||||||
*/
|
|
||||||
public function isEmpty()
|
|
||||||
{
|
|
||||||
// Note: Little "trick". Empty arrays evaluate to FALSE. No need to count().
|
|
||||||
return ! (bool)$this->_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Populate a Collection from an array of data.
|
|
||||||
*
|
|
||||||
* @param string $array
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function fromArray($array, $deep = true)
|
|
||||||
{
|
|
||||||
$data = array();
|
|
||||||
foreach ($array as $rowKey => $row) {
|
|
||||||
$this[$rowKey]->fromArray($row, $deep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Synchronizes a Collection with data from an array.
|
|
||||||
*
|
|
||||||
* it expects an array representation of a Doctrine_Collection similar to the return
|
|
||||||
* value of the toArray() method. It will create Dectrine_Records that don't exist
|
|
||||||
* on the collection, update the ones that do and remove the ones missing in the $array
|
|
||||||
*
|
|
||||||
* @param array $array representation of a Doctrine_Collection
|
|
||||||
*/
|
|
||||||
public function synchronizeFromArray(array $array)
|
|
||||||
{
|
|
||||||
foreach ($this as $key => $record) {
|
|
||||||
if (isset($array[$key])) {
|
|
||||||
$record->synchronizeFromArray($array[$key]);
|
|
||||||
unset($array[$key]);
|
|
||||||
} else {
|
|
||||||
// remove records that don't exist in the array
|
|
||||||
$this->remove($key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// create new records for each new row in the array
|
|
||||||
foreach ($array as $rowKey => $row) {
|
|
||||||
$this[$rowKey]->fromArray($row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL:
|
* INTERNAL:
|
||||||
* getDeleteDiff
|
* getDeleteDiff
|
||||||
@ -680,45 +363,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param <type> $deep
|
|
||||||
*/
|
|
||||||
/*public function free($deep = false)
|
|
||||||
{
|
|
||||||
foreach ($this->getData() as $key => $record) {
|
|
||||||
if ( ! ($record instanceof Doctrine_Null)) {
|
|
||||||
$record->free($deep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_data = array();
|
|
||||||
|
|
||||||
if ($this->_owner) {
|
|
||||||
$this->_owner->free($deep);
|
|
||||||
$this->_owner = null;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getIterator
|
|
||||||
*
|
|
||||||
* @return object ArrayIterator
|
|
||||||
*/
|
|
||||||
public function getIterator()
|
|
||||||
{
|
|
||||||
$data = $this->_data;
|
|
||||||
return new ArrayIterator($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* returns a string representation of this object
|
|
||||||
*/
|
|
||||||
public function __toString()
|
|
||||||
{
|
|
||||||
return Doctrine_Lib::getCollectionAsString($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL: Gets the association mapping of the collection.
|
* INTERNAL: Gets the association mapping of the collection.
|
||||||
*
|
*
|
||||||
@ -729,30 +373,6 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
return $this->relation;
|
return $this->relation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo Experiment. Waiting for 5.3 closures.
|
|
||||||
* Example usage:
|
|
||||||
*
|
|
||||||
* $map = $coll->mapElements(function($key, $entity) {
|
|
||||||
* return array($entity->id, $entity->name);
|
|
||||||
* });
|
|
||||||
*
|
|
||||||
* or:
|
|
||||||
*
|
|
||||||
* $map = $coll->mapElements(function($key, $entity) {
|
|
||||||
* return array($entity->name, strtoupper($entity->name));
|
|
||||||
* });
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function mapElements($lambda) {
|
|
||||||
$result = array();
|
|
||||||
foreach ($this->_data as $key => $entity) {
|
|
||||||
list($key, $value) = each($lambda($key, $entity));
|
|
||||||
$result[$key] = $value;
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the collection.
|
* Clears the collection.
|
||||||
*
|
*
|
||||||
@ -767,7 +387,7 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
$this->_em->delete($entity);
|
$this->_em->delete($entity);
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
$this->_data = array();
|
parent::clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _changed()
|
private function _changed()
|
||||||
@ -776,55 +396,4 @@ class Doctrine_ORM_Collection implements Countable, IteratorAggregate, Serializa
|
|||||||
$this->_em->getUnitOfWork()->scheduleCollectionUpdate($this);
|
$this->_em->getUnitOfWork()->scheduleCollectionUpdate($this);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Serializable implementation */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Serializes the collection.
|
|
||||||
* This method is automatically called when the Collection is serialized.
|
|
||||||
*
|
|
||||||
* Part of the implementation of the Serializable interface.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function serialize()
|
|
||||||
{
|
|
||||||
$vars = get_object_vars($this);
|
|
||||||
|
|
||||||
unset($vars['reference']);
|
|
||||||
unset($vars['relation']);
|
|
||||||
unset($vars['expandable']);
|
|
||||||
unset($vars['expanded']);
|
|
||||||
unset($vars['generator']);
|
|
||||||
|
|
||||||
return serialize($vars);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reconstitutes the collection object from it's serialized form.
|
|
||||||
* This method is automatically called everytime the Collection object is unserialized.
|
|
||||||
*
|
|
||||||
* Part of the implementation of the Serializable interface.
|
|
||||||
*
|
|
||||||
* @param string $serialized The serialized data
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function unserialize($serialized)
|
|
||||||
{
|
|
||||||
$manager = Doctrine_ORM_EntityManager::getActiveEntityManager();
|
|
||||||
$connection = $manager->getConnection();
|
|
||||||
|
|
||||||
$array = unserialize($serialized);
|
|
||||||
|
|
||||||
foreach ($array as $name => $values) {
|
|
||||||
$this->$name = $values;
|
|
||||||
}
|
|
||||||
|
|
||||||
$keyColumn = isset($array['keyField']) ? $array['keyField'] : null;
|
|
||||||
|
|
||||||
if ($keyColumn !== null) {
|
|
||||||
$this->_keyField = $keyColumn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -131,16 +131,28 @@ class Doctrine_ORM_EntityManager
|
|||||||
* @var EventManager
|
* @var EventManager
|
||||||
*/
|
*/
|
||||||
private $_eventManager;
|
private $_eventManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maintained (cached) Id generators.
|
||||||
|
*
|
||||||
|
* @var <type>
|
||||||
|
*/
|
||||||
private $_idGenerators = array();
|
private $_idGenerators = array();
|
||||||
|
|
||||||
|
/** Whether the EntityManager is closed or not. */
|
||||||
private $_closed = false;
|
private $_closed = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new EntityManager that operates on the given database connection.
|
* Creates a new EntityManager that operates on the given database connection
|
||||||
|
* and uses the given Configuration and EventManager implementations.
|
||||||
*
|
*
|
||||||
* @param Doctrine_Connection $conn
|
* @param Doctrine\DBAL\Connection $conn
|
||||||
* @param string $name
|
* @param string $name
|
||||||
*/
|
*/
|
||||||
protected function __construct(Doctrine_DBAL_Connection $conn, $name, Doctrine_ORM_Configuration $config,
|
protected function __construct(
|
||||||
|
Doctrine_DBAL_Connection $conn,
|
||||||
|
$name,
|
||||||
|
Doctrine_ORM_Configuration $config,
|
||||||
Doctrine_Common_EventManager $eventManager)
|
Doctrine_Common_EventManager $eventManager)
|
||||||
{
|
{
|
||||||
$this->_conn = $conn;
|
$this->_conn = $conn;
|
||||||
@ -183,7 +195,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts a database transaction.
|
* Starts a transaction on the underlying connection.
|
||||||
*/
|
*/
|
||||||
public function beginTransaction()
|
public function beginTransaction()
|
||||||
{
|
{
|
||||||
@ -191,11 +203,11 @@ class Doctrine_ORM_EntityManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Commits a running database transaction.
|
* Commits a running transaction.
|
||||||
* This causes a flush() of the EntityManager if the flush mode is set to
|
* This causes a flush() of the EntityManager if the flush mode is set to
|
||||||
* AUTO or COMMIT.
|
* AUTO or COMMIT.
|
||||||
*
|
*
|
||||||
* @return unknown
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function commit()
|
public function commit()
|
||||||
{
|
{
|
||||||
@ -275,7 +287,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
{
|
{
|
||||||
if ( ! isset($this->_persisters[$entityName])) {
|
if ( ! isset($this->_persisters[$entityName])) {
|
||||||
$class = $this->getClassMetadata($entityName);
|
$class = $this->getClassMetadata($entityName);
|
||||||
if ($class->getInheritanceType() == Doctrine_ORM_Mapping_ClassMetadata::INHERITANCE_TYPE_JOINED) {
|
if ($class->isInheritanceTypeJoined()) {
|
||||||
$persister = new Doctrine_EntityPersister_JoinedSubclass($this, $class);
|
$persister = new Doctrine_EntityPersister_JoinedSubclass($this, $class);
|
||||||
} else {
|
} else {
|
||||||
$persister = new Doctrine_ORM_Persisters_StandardEntityPersister($this, $class);
|
$persister = new Doctrine_ORM_Persisters_StandardEntityPersister($this, $class);
|
||||||
@ -288,8 +300,8 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Detaches an entity from the manager. It's lifecycle is no longer managed.
|
* Detaches an entity from the manager. It's lifecycle is no longer managed.
|
||||||
*
|
*
|
||||||
* @param Doctrine_Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return unknown
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function detach(Doctrine_ORM_Entity $entity)
|
public function detach(Doctrine_ORM_Entity $entity)
|
||||||
{
|
{
|
||||||
@ -342,11 +354,11 @@ class Doctrine_ORM_EntityManager
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds an Entity by its identifier.
|
* Finds an Entity by its identifier.
|
||||||
* This is just a convenient shortcut for getRepository()->find().
|
* This is just a convenient shortcut for getRepository($entityName)->find($id).
|
||||||
*
|
*
|
||||||
* @param string $entityName
|
* @param string $entityName
|
||||||
* @param mixed $identifier
|
* @param mixed $identifier
|
||||||
* @return Doctrine::ORM::Entity
|
* @return Doctrine\ORM\Entity
|
||||||
*/
|
*/
|
||||||
public function find($entityName, $identifier)
|
public function find($entityName, $identifier)
|
||||||
{
|
{
|
||||||
@ -391,23 +403,19 @@ class Doctrine_ORM_EntityManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the persistence context, detaching all entities.
|
* Clears the persistence context, effectively detaching all managed entities.
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
* @todo package:orm
|
|
||||||
*/
|
*/
|
||||||
public function clear($entityName = null)
|
public function clear($entityName = null)
|
||||||
{
|
{
|
||||||
if ($entityName === null) {
|
if ($entityName === null) {
|
||||||
$this->_unitOfWork->detachAll();
|
$this->_unitOfWork->detachAll();
|
||||||
} else {
|
} else {
|
||||||
//...
|
//TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes the EntityManager.
|
* Closes the EntityManager.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function close()
|
public function close()
|
||||||
{
|
{
|
||||||
@ -418,7 +426,6 @@ class Doctrine_ORM_EntityManager
|
|||||||
* Saves the given entity, persisting it's state.
|
* Saves the given entity, persisting it's state.
|
||||||
*
|
*
|
||||||
* @param Doctrine\ORM\Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function save(Doctrine_ORM_Entity $entity)
|
public function save(Doctrine_ORM_Entity $entity)
|
||||||
{
|
{
|
||||||
@ -430,10 +437,9 @@ class Doctrine_ORM_EntityManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the given entity from the persistent store.
|
* Deletes the persistent state of the given entity.
|
||||||
*
|
*
|
||||||
* @param Doctrine\ORM\Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return void
|
|
||||||
*/
|
*/
|
||||||
public function delete(Doctrine_ORM_Entity $entity)
|
public function delete(Doctrine_ORM_Entity $entity)
|
||||||
{
|
{
|
||||||
@ -448,8 +454,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
* Refreshes the persistent state of the entity from the database,
|
* Refreshes the persistent state of the entity from the database,
|
||||||
* overriding any local changes that have not yet been persisted.
|
* overriding any local changes that have not yet been persisted.
|
||||||
*
|
*
|
||||||
* @param Doctrine::ORM::Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return void
|
|
||||||
* @todo FIX Impl
|
* @todo FIX Impl
|
||||||
*/
|
*/
|
||||||
public function refresh(Doctrine_ORM_Entity $entity)
|
public function refresh(Doctrine_ORM_Entity $entity)
|
||||||
@ -462,8 +467,8 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Creates a copy of the given entity. Can create a shallow or a deep copy.
|
* Creates a copy of the given entity. Can create a shallow or a deep copy.
|
||||||
*
|
*
|
||||||
* @param Doctrine::ORM::Entity $entity The entity to copy.
|
* @param Doctrine\ORM\Entity $entity The entity to copy.
|
||||||
* @return Doctrine::ORM::Entity The new entity.
|
* @return Doctrine\ORM\Entity The new entity.
|
||||||
*/
|
*/
|
||||||
public function copy(Doctrine_ORM_Entity $entity, $deep = false)
|
public function copy(Doctrine_ORM_Entity $entity, $deep = false)
|
||||||
{
|
{
|
||||||
@ -474,7 +479,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
* Gets the repository for an Entity.
|
* Gets the repository for an Entity.
|
||||||
*
|
*
|
||||||
* @param string $entityName The name of the Entity.
|
* @param string $entityName The name of the Entity.
|
||||||
* @return Doctrine::ORM::EntityRepository The repository.
|
* @return Doctrine\ORM\EntityRepository The repository.
|
||||||
*/
|
*/
|
||||||
public function getRepository($entityName)
|
public function getRepository($entityName)
|
||||||
{
|
{
|
||||||
@ -497,7 +502,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Checks if the instance is managed by the EntityManager.
|
* Checks if the instance is managed by the EntityManager.
|
||||||
*
|
*
|
||||||
* @param Doctrine::ORM::Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return boolean TRUE if this EntityManager currently manages the given entity
|
* @return boolean TRUE if this EntityManager currently manages the given entity
|
||||||
* (and has it in the identity map), FALSE otherwise.
|
* (and has it in the identity map), FALSE otherwise.
|
||||||
*/
|
*/
|
||||||
@ -552,6 +557,8 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Checks whether this EntityManager is the currently active one.
|
* Checks whether this EntityManager is the currently active one.
|
||||||
*
|
*
|
||||||
|
* Note:This is only useful in scenarios where {@link ActiveEntity}s are used.
|
||||||
|
*
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function isActive()
|
public function isActive()
|
||||||
@ -562,7 +569,7 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Makes this EntityManager the currently active one.
|
* Makes this EntityManager the currently active one.
|
||||||
*
|
*
|
||||||
* @return void
|
* Note: This is only useful in scenarios where {@link ActiveEntity}s are used.
|
||||||
*/
|
*/
|
||||||
public function activate()
|
public function activate()
|
||||||
{
|
{
|
||||||
@ -582,7 +589,10 @@ class Doctrine_ORM_EntityManager
|
|||||||
* @param EventManager $eventManager The EventManager instance to use.
|
* @param EventManager $eventManager The EventManager instance to use.
|
||||||
* @return EntityManager The created EntityManager.
|
* @return EntityManager The created EntityManager.
|
||||||
*/
|
*/
|
||||||
public static function create($conn, $name, Doctrine_ORM_Configuration $config = null,
|
public static function create(
|
||||||
|
$conn,
|
||||||
|
$name,
|
||||||
|
Doctrine_ORM_Configuration $config = null,
|
||||||
Doctrine_Common_EventManager $eventManager = null)
|
Doctrine_Common_EventManager $eventManager = null)
|
||||||
{
|
{
|
||||||
if (is_array($conn)) {
|
if (is_array($conn)) {
|
||||||
@ -607,6 +617,8 @@ class Doctrine_ORM_EntityManager
|
|||||||
/**
|
/**
|
||||||
* Static lookup to get the currently active EntityManager.
|
* Static lookup to get the currently active EntityManager.
|
||||||
*
|
*
|
||||||
|
* Note: Used by {@link ActiveEntity}s to actively lookup an EntityManager.
|
||||||
|
*
|
||||||
* @return Doctrine\ORM\EntityManager
|
* @return Doctrine\ORM\EntityManager
|
||||||
*/
|
*/
|
||||||
public static function getActiveEntityManager()
|
public static function getActiveEntityManager()
|
||||||
|
@ -55,7 +55,7 @@ class Doctrine_ORM_Internal_Hydration_ObjectDriver
|
|||||||
|
|
||||||
public function getElementCollection($component)
|
public function getElementCollection($component)
|
||||||
{
|
{
|
||||||
$coll = new Doctrine_ORM_Collection($component);
|
$coll = new Doctrine_ORM_Collection($this->_em, $component);
|
||||||
$this->_collections[] = $coll;
|
$this->_collections[] = $coll;
|
||||||
return $coll;
|
return $coll;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
#namespace Doctrine::ORM;
|
#namespace Doctrine\ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo Migrate the old RawSql to NativeQuery.
|
* @todo Migrate the old RawSql to NativeQuery.
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* <http://www.phpdoctrine.org>.
|
* <http://www.phpdoctrine.org>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#namespace Doctrine::ORM;
|
#namespace Doctrine\ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Doctrine_ORM_Query object represents a DQL query. It is used to query databases for
|
* A Doctrine_ORM_Query object represents a DQL query. It is used to query databases for
|
||||||
@ -28,7 +28,7 @@
|
|||||||
* and is dbms independant.
|
* and is dbms independant.
|
||||||
*
|
*
|
||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||||
* @link www.phpdoctrine.org
|
* @link www.doctrine-project.org
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
* @version $Revision: 3938 $
|
* @version $Revision: 3938 $
|
||||||
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
||||||
@ -60,17 +60,17 @@ class Doctrine_ORM_Query extends Doctrine_ORM_Query_Abstract
|
|||||||
const HYDRATE_NONE = 5;
|
const HYDRATE_NONE = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Doctrine_ORM_EntityManager The entity manager used by this query object.
|
* @var Doctrine\ORM\EntityManager The entity manager used by this query object.
|
||||||
*/
|
*/
|
||||||
protected $_entityManager;
|
protected $_entityManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Doctrine_ORM_Internal_Hydration The hydrator object used to hydrate query results.
|
* @var Doctrine\ORM\Internal\Hydrator The hydrator object used to hydrate query results.
|
||||||
*/
|
*/
|
||||||
protected $_hydrator;
|
protected $_hydrator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Doctrine_ORM_Query_ParserResult The parser result that holds DQL => SQL information.
|
* @var Doctrine\ORM\Query\ParserResult The parser result that holds DQL => SQL information.
|
||||||
*/
|
*/
|
||||||
protected $_parserResult;
|
protected $_parserResult;
|
||||||
|
|
||||||
@ -120,20 +120,19 @@ class Doctrine_ORM_Query extends Doctrine_ORM_Query_Abstract
|
|||||||
/**
|
/**
|
||||||
* Initializes a new instance of the Query class.
|
* Initializes a new instance of the Query class.
|
||||||
*
|
*
|
||||||
* @param EntityManager $entityManager
|
* @param Doctrine\ORM\EntityManager $entityManager
|
||||||
*/
|
*/
|
||||||
public function __construct(Doctrine_ORM_EntityManager $entityManager)
|
public function __construct(Doctrine_ORM_EntityManager $entityManager)
|
||||||
{
|
{
|
||||||
$this->_entityManager = $entityManager;
|
$this->_entityManager = $entityManager;
|
||||||
$this->_hydrator = new Doctrine_ORM_Internal_Hydration_StandardHydrator($entityManager);
|
$this->_hydrator = new Doctrine_ORM_Internal_Hydration_StandardHydrator($entityManager);
|
||||||
|
|
||||||
$this->free();
|
$this->free();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the assocated EntityManager to this Doctrine_ORM_Query
|
* Retrieves the assocated EntityManager to this Doctrine_ORM_Query
|
||||||
*
|
*
|
||||||
* @return Doctrine_EntityManager
|
* @return Doctrine\ORM\EntityManager
|
||||||
*/
|
*/
|
||||||
public function getEntityManager()
|
public function getEntityManager()
|
||||||
{
|
{
|
||||||
@ -143,7 +142,7 @@ class Doctrine_ORM_Query extends Doctrine_ORM_Query_Abstract
|
|||||||
/**
|
/**
|
||||||
* Returns the hydrator associated with this query object
|
* Returns the hydrator associated with this query object
|
||||||
*
|
*
|
||||||
* @return Doctrine_ORM_Internal_Hydration The hydrator associated with this query object
|
* @return Doctrine\ORM\Internal\StandardHydrator The hydrator associated with this query object
|
||||||
*/
|
*/
|
||||||
public function getHydrator()
|
public function getHydrator()
|
||||||
{
|
{
|
||||||
@ -166,7 +165,7 @@ class Doctrine_ORM_Query extends Doctrine_ORM_Query_Abstract
|
|||||||
*
|
*
|
||||||
* @param string $params Parameters
|
* @param string $params Parameters
|
||||||
* @param int $hydrationMode Hydration mode
|
* @param int $hydrationMode Hydration mode
|
||||||
* @return mixed Array or Doctrine_Collection or false if no result.
|
* @return mixed Array or Doctrine\Common\Collection or false if no result.
|
||||||
*/
|
*/
|
||||||
public function fetchOne($params = array(), $hydrationMode = null)
|
public function fetchOne($params = array(), $hydrationMode = null)
|
||||||
{
|
{
|
||||||
@ -191,7 +190,6 @@ class Doctrine_ORM_Query extends Doctrine_ORM_Query_Abstract
|
|||||||
* @param string $query DQL query
|
* @param string $query DQL query
|
||||||
* @param array $params prepared statement parameters
|
* @param array $params prepared statement parameters
|
||||||
* @param int $hydrationMode Doctrine::FETCH_ARRAY or Doctrine::FETCH_RECORD
|
* @param int $hydrationMode Doctrine::FETCH_ARRAY or Doctrine::FETCH_RECORD
|
||||||
* @see Doctrine::FETCH_* constants
|
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function query($query, $params = array(), $hydrationMode = null)
|
public function query($query, $params = array(), $hydrationMode = null)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Id: Cache.php 3938 2008-03-06 19:36:50Z romanb $
|
* $Id: Cache.php 3938 2008-03-06 19:36:50Z romanb $
|
||||||
*
|
*
|
||||||
@ -20,12 +19,14 @@
|
|||||||
* <http://www.phpdoctrine.org>.
|
* <http://www.phpdoctrine.org>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#namespace Doctrine\ORM\Query;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Doctrine_ORM_Query_CacheHandler
|
* Doctrine_ORM_Query_CacheHandler
|
||||||
*
|
*
|
||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||||
* @link www.phpdoctrine.com
|
* @link www.doctrine-project.com
|
||||||
* @since 1.0
|
* @since 2.0
|
||||||
* @version $Revision: 1393 $
|
* @version $Revision: 1393 $
|
||||||
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
|
||||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||||
|
@ -650,19 +650,28 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
public function getEntityState($entity)
|
public function getEntityState($entity)
|
||||||
{
|
{
|
||||||
$oid = spl_object_hash($entity);
|
$oid = spl_object_hash($entity);
|
||||||
return isset($this->_entityStates[$oid]) ? $this->_entityStates[$oid] : self::STATE_NEW;
|
if ( ! isset($this->_entityStates[$oid])) {
|
||||||
|
if (isset($this->_entityIdentifiers[$oid])) {
|
||||||
|
$this->_entityStates[$oid] = self::STATE_DETACHED;
|
||||||
|
} else {
|
||||||
|
$this->_entityStates[$oid] = self::STATE_NEW;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->_entityStates[$oid];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes an entity from the identity map.
|
* Removes an entity from the identity map. This effectively detaches the
|
||||||
|
* entity from the persistence management of Doctrine.
|
||||||
*
|
*
|
||||||
* @param Doctrine\ORM\Entity $entity
|
* @param Doctrine\ORM\Entity $entity
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function removeFromIdentityMap($entity)
|
public function removeFromIdentityMap($entity)
|
||||||
{
|
{
|
||||||
|
$oid = spl_object_hash($entity);
|
||||||
$classMetadata = $this->_em->getClassMetadata(get_class($entity));
|
$classMetadata = $this->_em->getClassMetadata(get_class($entity));
|
||||||
$idHash = $this->getIdentifierHash($this->_entityIdentifiers[spl_object_hash($entity)]);
|
$idHash = $this->getIdentifierHash($this->_entityIdentifiers[$oid]);
|
||||||
if ($idHash === '') {
|
if ($idHash === '') {
|
||||||
throw new Doctrine_Exception("Entity with oid '" . spl_object_hash($entity)
|
throw new Doctrine_Exception("Entity with oid '" . spl_object_hash($entity)
|
||||||
. "' has no identity and therefore can't be removed from the identity map.");
|
. "' has no identity and therefore can't be removed from the identity map.");
|
||||||
@ -670,6 +679,7 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
$className = $classMetadata->getRootClassName();
|
$className = $classMetadata->getRootClassName();
|
||||||
if (isset($this->_identityMap[$className][$idHash])) {
|
if (isset($this->_identityMap[$className][$idHash])) {
|
||||||
unset($this->_identityMap[$className][$idHash]);
|
unset($this->_identityMap[$className][$idHash]);
|
||||||
|
$this->_entityStates[$oid] = self::STATE_DETACHED;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,7 +687,7 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds an entity in the identity map by its identifier hash.
|
* Gets an entity in the identity map by its identifier hash.
|
||||||
*
|
*
|
||||||
* @param string $idHash
|
* @param string $idHash
|
||||||
* @param string $rootClassName
|
* @param string $rootClassName
|
||||||
@ -692,8 +702,8 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
* Tries to get an entity by its identifier hash. If no entity is found for
|
* Tries to get an entity by its identifier hash. If no entity is found for
|
||||||
* the given hash, FALSE is returned.
|
* the given hash, FALSE is returned.
|
||||||
*
|
*
|
||||||
* @param <type> $idHash
|
* @param string $idHash
|
||||||
* @param <type> $rootClassName
|
* @param string $rootClassName
|
||||||
* @return mixed The found entity or FALSE.
|
* @return mixed The found entity or FALSE.
|
||||||
*/
|
*/
|
||||||
public function tryGetByIdHash($idHash, $rootClassName)
|
public function tryGetByIdHash($idHash, $rootClassName)
|
||||||
@ -760,7 +770,7 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
/**
|
/**
|
||||||
* Saves an entity as part of the current unit of work.
|
* Saves an entity as part of the current unit of work.
|
||||||
*
|
*
|
||||||
* @param Doctrine_ORM_Entity $entity The entity to save.
|
* @param Doctrine\ORM\Entity $entity The entity to save.
|
||||||
*/
|
*/
|
||||||
public function save($entity)
|
public function save($entity)
|
||||||
{
|
{
|
||||||
@ -775,7 +785,7 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
foreach ($commitOrder as $class) {
|
foreach ($commitOrder as $class) {
|
||||||
$this->_executeInserts($class);
|
$this->_executeInserts($class);
|
||||||
}
|
}
|
||||||
// remove them from _newEntities
|
// remove them from _newEntities and _dataChangeSets
|
||||||
$this->_newEntities = array_diff_key($this->_newEntities, $insertNow);
|
$this->_newEntities = array_diff_key($this->_newEntities, $insertNow);
|
||||||
$this->_dataChangeSets = array_diff_key($this->_dataChangeSets, $insertNow);
|
$this->_dataChangeSets = array_diff_key($this->_dataChangeSets, $insertNow);
|
||||||
}
|
}
|
||||||
@ -786,8 +796,8 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
* This method is internally called during save() cascades as it tracks
|
* This method is internally called during save() cascades as it tracks
|
||||||
* the already visited entities to prevent infinite recursions.
|
* the already visited entities to prevent infinite recursions.
|
||||||
*
|
*
|
||||||
* @param Doctrine_ORM_Entity $entity The entity to save.
|
* @param Doctrine\ORM\Entity $entity The entity to save.
|
||||||
* @param array $visited The already visited entities.
|
* @param array $visited The already visited entities.
|
||||||
*/
|
*/
|
||||||
private function _doSave($entity, array &$visited, array &$insertNow)
|
private function _doSave($entity, array &$visited, array &$insertNow)
|
||||||
{
|
{
|
||||||
@ -909,33 +919,61 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cascades the delete operation to associated entities.
|
||||||
|
*
|
||||||
|
* @param Doctrine\ORM\Entity $entity
|
||||||
|
*/
|
||||||
private function _cascadeDelete($entity)
|
private function _cascadeDelete($entity)
|
||||||
{
|
{
|
||||||
|
$class = $this->_em->getClassMetadata(get_class($entity));
|
||||||
|
foreach ($class->getAssociationMappings() as $assocMapping) {
|
||||||
|
if ( ! $assocMapping->isCascadeDelete()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$relatedEntities = $class->getReflectionProperty($assocMapping->getSourceFieldName())
|
||||||
|
->getValue($entity);
|
||||||
|
if ($relatedEntities instanceof Doctrine_ORM_Collection &&
|
||||||
|
count($relatedEntities) > 0) {
|
||||||
|
foreach ($relatedEntities as $relatedEntity) {
|
||||||
|
$this->_doDelete($relatedEntity, $visited, $insertNow);
|
||||||
|
}
|
||||||
|
} else if (is_object($relatedEntities)) {
|
||||||
|
$this->_doDelete($relatedEntities, $visited, $insertNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the CommitOrderCalculator used by the UnitOfWork to order commits.
|
||||||
|
*
|
||||||
|
* @return Doctrine\ORM\Internal\CommitOrderCalculator
|
||||||
|
*/
|
||||||
public function getCommitOrderCalculator()
|
public function getCommitOrderCalculator()
|
||||||
{
|
{
|
||||||
return $this->_commitOrderCalculator;
|
return $this->_commitOrderCalculator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the UnitOfWork.
|
||||||
|
*/
|
||||||
public function close()
|
public function close()
|
||||||
{
|
{
|
||||||
//...
|
//...
|
||||||
$this->_commitOrderCalculator->clear();
|
$this->_commitOrderCalculator->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scheduleCollectionUpdate(Doctrine_Collection $coll)
|
public function scheduleCollectionUpdate(Doctrine_ORM_Collection $coll)
|
||||||
{
|
{
|
||||||
$this->_collectionUpdates[] = $coll;
|
$this->_collectionUpdates[] = $coll;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isCollectionScheduledForUpdate(Doctrine_Collection $coll)
|
public function isCollectionScheduledForUpdate(Doctrine_ORM_Collection $coll)
|
||||||
{
|
{
|
||||||
//...
|
//...
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scheduleCollectionDeletion(Doctrine_Collection $coll)
|
public function scheduleCollectionDeletion(Doctrine_ORM_Collection $coll)
|
||||||
{
|
{
|
||||||
//TODO: if $coll is already scheduled for recreation ... what to do?
|
//TODO: if $coll is already scheduled for recreation ... what to do?
|
||||||
// Just remove $coll from the scheduled recreations?
|
// Just remove $coll from the scheduled recreations?
|
||||||
@ -1097,7 +1135,9 @@ class Doctrine_ORM_UnitOfWork
|
|||||||
* INTERNAL:
|
* INTERNAL:
|
||||||
* For hydration purposes only.
|
* For hydration purposes only.
|
||||||
*
|
*
|
||||||
* Adds a managed collection to the UnitOfWork.
|
* Adds a managed collection to the UnitOfWork. On commit time, the UnitOfWork
|
||||||
|
* checks all these managed collections for modifications and then initiates
|
||||||
|
* the appropriate database synchronization.
|
||||||
*
|
*
|
||||||
* @param Doctrine\ORM\Collection $coll
|
* @param Doctrine\ORM\Collection $coll
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
if (!defined('PHPUnit_MAIN_METHOD')) {
|
if (!defined('PHPUnit_MAIN_METHOD')) {
|
||||||
define('PHPUnit_MAIN_METHOD', 'AllTests::main');
|
define('PHPUnit_MAIN_METHOD', 'AllTests::main');
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ if (!defined('PHPUnit_MAIN_METHOD')) {
|
|||||||
require_once 'lib/DoctrineTestInit.php';
|
require_once 'lib/DoctrineTestInit.php';
|
||||||
|
|
||||||
// Suites
|
// Suites
|
||||||
require_once 'Orm/Component/AllTests.php';
|
|
||||||
require_once 'Orm/Query/AllTests.php';
|
require_once 'Orm/Query/AllTests.php';
|
||||||
require_once 'Orm/Hydration/AllTests.php';
|
require_once 'Orm/Hydration/AllTests.php';
|
||||||
require_once 'Orm/Ticket/AllTests.php';
|
require_once 'Orm/Ticket/AllTests.php';
|
||||||
@ -17,6 +16,7 @@ require_once 'Orm/Associations/AllTests.php';
|
|||||||
require_once 'Orm/UnitOfWorkTest.php';
|
require_once 'Orm/UnitOfWorkTest.php';
|
||||||
require_once 'Orm/EntityManagerTest.php';
|
require_once 'Orm/EntityManagerTest.php';
|
||||||
require_once 'Orm/EntityPersisterTest.php';
|
require_once 'Orm/EntityPersisterTest.php';
|
||||||
|
require_once 'Orm/CommitOrderCalculatorTest.php';
|
||||||
|
|
||||||
class Orm_AllTests
|
class Orm_AllTests
|
||||||
{
|
{
|
||||||
@ -32,8 +32,8 @@ class Orm_AllTests
|
|||||||
$suite->addTestSuite('Orm_UnitOfWorkTest');
|
$suite->addTestSuite('Orm_UnitOfWorkTest');
|
||||||
$suite->addTestSuite('Orm_EntityManagerTest');
|
$suite->addTestSuite('Orm_EntityManagerTest');
|
||||||
$suite->addTestSuite('Orm_EntityPersisterTest');
|
$suite->addTestSuite('Orm_EntityPersisterTest');
|
||||||
|
$suite->addTestSuite('Orm_CommitOrderCalculatorTest');
|
||||||
|
|
||||||
$suite->addTest(Orm_Component_AllTests::suite());
|
|
||||||
$suite->addTest(Orm_Query_AllTests::suite());
|
$suite->addTest(Orm_Query_AllTests::suite());
|
||||||
$suite->addTest(Orm_Hydration_AllTests::suite());
|
$suite->addTest(Orm_Hydration_AllTests::suite());
|
||||||
$suite->addTest(Orm_Entity_AllTests::suite());
|
$suite->addTest(Orm_Entity_AllTests::suite());
|
||||||
|
@ -8,20 +8,21 @@ require_once 'lib/DoctrineTestInit.php';
|
|||||||
* can have many valid orderings, so you may want to build a graph that has only
|
* can have many valid orderings, so you may want to build a graph that has only
|
||||||
* 1 valid order to simplify your tests.
|
* 1 valid order to simplify your tests.
|
||||||
*/
|
*/
|
||||||
class Orm_Internal_CommitOrderCalculatorTest extends Doctrine_OrmTestCase
|
class Orm_CommitOrderCalculatorTest extends Doctrine_OrmTestCase
|
||||||
{
|
{
|
||||||
private $_calc;
|
private $_calc;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$this->_calc = new Doctrine_Internal_CommitOrderCalculator();
|
$this->_calc = new Doctrine_ORM_Internal_CommitOrderCalculator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Helper to create an array of nodes */
|
||||||
private function _createNodes(array $names)
|
private function _createNodes(array $names)
|
||||||
{
|
{
|
||||||
$nodes = array();
|
$nodes = array();
|
||||||
foreach ($names as $name) {
|
foreach ($names as $name) {
|
||||||
$node = new Doctrine_Internal_CommitOrderNode($name, $this->_calc);
|
$node = new Doctrine_ORM_Internal_CommitOrderNode($name, $this->_calc);
|
||||||
$nodes[$name] = $node;
|
$nodes[$name] = $node;
|
||||||
$this->_calc->addNode($node->getClass(), $node);
|
$this->_calc->addNode($node->getClass(), $node);
|
||||||
}
|
}
|
||||||
@ -46,6 +47,4 @@ class Orm_Internal_CommitOrderCalculatorTest extends Doctrine_OrmTestCase
|
|||||||
$this->assertSame($correctOrder, $sorted);
|
$this->assertSame($correctOrder, $sorted);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,189 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* $Id: Doctrine.php 3754 2008-02-13 10:53:07Z romanb $
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This software consists of voluntary contributions made by many individuals
|
|
||||||
* and is licensed under the LGPL. For more information, see
|
|
||||||
* <http://www.phpdoctrine.org>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Testcase for basic accessor/mutator functionality.
|
|
||||||
*
|
|
||||||
* @package Doctrine
|
|
||||||
* @author Bjarte Stien Karlsen <doctrine@bjartek.org>
|
|
||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
|
||||||
* @link www.phpdoctrine.org
|
|
||||||
* @since 2.0
|
|
||||||
* @version $Revision: 3754 $
|
|
||||||
*/
|
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
|
||||||
|
|
||||||
class AccessStub extends Doctrine_Access {}
|
|
||||||
|
|
||||||
class Orm_Component_AccessTest extends Doctrine_OrmTestCase
|
|
||||||
{
|
|
||||||
|
|
||||||
private $user;
|
|
||||||
|
|
||||||
public function setUp()
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
$this->user = new ForumUser();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*public function testAccessorOverridePerformance() {
|
|
||||||
$this->user->username;
|
|
||||||
$start = microtime(true);
|
|
||||||
for ($i = 0; $i < 1; $i++) {
|
|
||||||
$this->user->username;
|
|
||||||
}
|
|
||||||
$end = microtime(true);
|
|
||||||
echo ($end - $start) . " seconds" . PHP_EOL;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldMarkEmptyFieldAsNotSetOnNewRecord()
|
|
||||||
{
|
|
||||||
$this->assertFalse(isset($this->user->username));
|
|
||||||
$this->assertFalse(isset($this->user['username']));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldMarkNonExistantFieldAsNotSetOnNewRecord()
|
|
||||||
{
|
|
||||||
$this->assertFalse(isset($this->user->rat));
|
|
||||||
$this->assertFalse(isset($this->user['rat']));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldSetSingleValueInRecord()
|
|
||||||
{
|
|
||||||
$this->user->username = 'meus';
|
|
||||||
$this->assertEquals('meus', $this->user->username);
|
|
||||||
$this->assertEquals('meus', $this->user['username']);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldSetSingleValueInRecordWithOffset()
|
|
||||||
{
|
|
||||||
$this->user['username'] ='meus';
|
|
||||||
$this->assertEquals('meus', $this->user->username);
|
|
||||||
$this->assertEquals('meus', $this->user['username']);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_ORM_Exceptions_EntityException
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToSetNonExistantField()
|
|
||||||
{
|
|
||||||
$this->user->rat = 'meus';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_ORM_Exceptions_EntityException
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToSetNonExistantFieldWithOffset()
|
|
||||||
{
|
|
||||||
$this->user['rat'] = 'meus';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function newCollectionShouldBeEmpty()
|
|
||||||
{
|
|
||||||
$col = new Doctrine_Collection('ForumUser');
|
|
||||||
$this->assertEquals(0, count($col));
|
|
||||||
$this->assertFalse(isset($coll[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldBeAbleToUnsetWithOffsetFromCollection()
|
|
||||||
{
|
|
||||||
$col = new Doctrine_Collection('ForumUser');
|
|
||||||
$col[0] = new ForumUser();
|
|
||||||
$this->assertTrue(isset($col[0]));
|
|
||||||
unset($col[0]);
|
|
||||||
$this->assertFalse(isset($col[0]));
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
|
|
||||||
public function shouldBeAbleToUnsetFromCollection()
|
|
||||||
{
|
|
||||||
$col = new Doctrine_Collection('ForumUser');
|
|
||||||
$col->test = new ForumUser();
|
|
||||||
$this->assertTrue(isset($col->test));
|
|
||||||
unset($col->test);
|
|
||||||
$this->assertFalse(isset($col->test));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_Exception
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToUseContainsWhenNotImplemented()
|
|
||||||
{
|
|
||||||
$stub = new AccessStub();
|
|
||||||
isset($stub['foo']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_Exception
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToUseSetWhenNotImplemented()
|
|
||||||
{
|
|
||||||
$stub = new AccessStub();
|
|
||||||
$stub['foo'] = 'foo';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_Exception
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToUseUnsetWhenNotImplemented()
|
|
||||||
{
|
|
||||||
$stub = new AccessStub();
|
|
||||||
unset($stub['foo']);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_Exception
|
|
||||||
*/
|
|
||||||
public function shouldNotBeAbleToUseGetWhenNotImplemented()
|
|
||||||
{
|
|
||||||
$stub = new AccessStub();
|
|
||||||
$stub['foo'];
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
if (!defined('PHPUnit_MAIN_METHOD')) {
|
|
||||||
define('PHPUnit_MAIN_METHOD', 'Orm_Component_AllTests::main');
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
|
||||||
|
|
||||||
// Tests
|
|
||||||
//require_once 'Orm/Component/AccessTest.php';
|
|
||||||
require_once 'Orm/Component/CollectionTest.php';
|
|
||||||
|
|
||||||
class Orm_Component_AllTests
|
|
||||||
{
|
|
||||||
public static function main()
|
|
||||||
{
|
|
||||||
PHPUnit_TextUI_TestRunner::run(self::suite());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function suite()
|
|
||||||
{
|
|
||||||
$suite = new Doctrine_TestSuite('Doctrine Orm Component');
|
|
||||||
|
|
||||||
//$suite->addTestSuite('Orm_Component_AccessTest');
|
|
||||||
$suite->addTestSuite('Orm_Component_CollectionTest');
|
|
||||||
|
|
||||||
return $suite;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (PHPUnit_MAIN_METHOD == 'Orm_Component_AllTests::main') {
|
|
||||||
Orm_Component_AllTests::main();
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
<?php /* vim: set et sw=4 ts=4: */
|
|
||||||
/*
|
|
||||||
* $Id: Doctrine.php 3754 2008-02-13 10:53:07Z romanb $
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This software consists of voluntary contributions made by many individuals
|
|
||||||
* and is licensed under the LGPL. For more information, see
|
|
||||||
* <http://www.phpdoctrine.org>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Doctrine
|
|
||||||
* the base class of Doctrine framework
|
|
||||||
*
|
|
||||||
* @package Doctrine
|
|
||||||
* @author Bjarte Stien Karlsen <doctrine@bjartek.org>
|
|
||||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
|
||||||
* @link www.phpdoctrine.org
|
|
||||||
* @since 2.0
|
|
||||||
* @version $Revision: 3754 $
|
|
||||||
*/
|
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
|
||||||
|
|
||||||
class Orm_Component_CollectionTest extends Doctrine_OrmTestCase
|
|
||||||
{
|
|
||||||
|
|
||||||
private $coll;
|
|
||||||
|
|
||||||
public function setUp()
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
|
|
||||||
$this->coll = new Doctrine_ORM_Collection('ForumUser');
|
|
||||||
|
|
||||||
//we create a CmsUser with username as key column and add a user to it
|
|
||||||
$cmsColl = new Doctrine_ORM_Collection('CmsUser', 'username');
|
|
||||||
$user = new CmsUser();
|
|
||||||
$user->username ='test';
|
|
||||||
$cmsColl[] = $user;
|
|
||||||
$this->cmsColl = $cmsColl;
|
|
||||||
$this->cmsUser = $user;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldHaveBlankAsDefaultKeyColumn()
|
|
||||||
{
|
|
||||||
$this->assertEquals('', $this->coll->getKeyField());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldUseSpecifiedKeyColumn()
|
|
||||||
{
|
|
||||||
$coll = new Doctrine_ORM_Collection('ForumUser', 'id');
|
|
||||||
$this->assertEquals('id', $coll->getKeyField());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This test is currently failing. I do not understand why it should be
|
|
||||||
* possible to set this to something that is not valid.
|
|
||||||
*
|
|
||||||
* @test
|
|
||||||
* @expectedException Doctrine_Exception
|
|
||||||
*/
|
|
||||||
public function shouldThrowExceptionIfNonValidFieldSetAsKey()
|
|
||||||
{
|
|
||||||
$coll = new Doctrine_ORM_Collection('ForumUser', 'xxNonValidFieldxx');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldSerializeEmptyCollection()
|
|
||||||
{
|
|
||||||
$serialized = serialize($this->coll);
|
|
||||||
$this->assertTrue(is_string($serialized));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function shouldUnserializeEmptyCollectionIntoObject()
|
|
||||||
{
|
|
||||||
$serialized = serialize($this->coll);
|
|
||||||
$coll = unserialize($serialized);
|
|
||||||
$this->assertEquals('Doctrine_ORM_Collection', get_class($coll));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
/*public function shouldSetKeyColumnWhenAddingNewRowAsArray()
|
|
||||||
{
|
|
||||||
$this->assertTrue(isset($this->cmsColl['test']));
|
|
||||||
$this->assertEquals($this->cmsUser, $this->cmsColl['test']);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
/*public function shouldSerializeAndUnserializeCollectionWithData()
|
|
||||||
{
|
|
||||||
$serialized = serialize($this->cmsColl);
|
|
||||||
$coll = unserialize($serialized);
|
|
||||||
|
|
||||||
$this->assertEquals('username', $coll->getKeyField());
|
|
||||||
$this->assertTrue(isset($coll['test']));
|
|
||||||
$user = $coll['test'];
|
|
||||||
$this->assertTrue($user instanceOf CmsUser);
|
|
||||||
$this->assertEquals('test', $user['username']);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/* CURRENTLY NOT USED */
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
require_once 'lib/DoctrineTestInit.php';
|
||||||
|
|
||||||
class Orm_Entity_AccessorTest extends Doctrine_OrmTestCase
|
class Orm_Entity_AccessorTest extends Doctrine_OrmTestCase
|
||||||
|
@ -12,7 +12,7 @@ class Orm_Entity_ConstructorTest extends Doctrine_OrmTestCase
|
|||||||
|
|
||||||
class ConstructorTestEntity1
|
class ConstructorTestEntity1
|
||||||
{
|
{
|
||||||
public $id;
|
private $id;
|
||||||
public $username;
|
public $username;
|
||||||
|
|
||||||
public function __construct($username = null)
|
public function __construct($username = null)
|
||||||
@ -45,4 +45,3 @@ class ConstructorTestEntity1
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,35 +0,0 @@
|
|||||||
<?php
|
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
|
||||||
|
|
||||||
#namespace Doctrine::Tests::ORM;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EntityManagerFactory tests.
|
|
||||||
*/
|
|
||||||
class Orm_EntityManagerFactoryTest extends Doctrine_OrmTestCase
|
|
||||||
{
|
|
||||||
private $_mockOptions = array('driver' => 'mock', 'user' => '', 'password' => '');
|
|
||||||
|
|
||||||
protected function tearDown() {
|
|
||||||
parent::tearDown();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _createNamedManager($name)
|
|
||||||
{
|
|
||||||
return $this->_emf->createEntityManager($this->_mockOptions, $name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*public function testBindingEntityToNamedManager()
|
|
||||||
{
|
|
||||||
$myEM = $this->_createNamedManager('myEM');
|
|
||||||
$this->_emf->bindEntityToManager('SomeEntity', 'myEM');
|
|
||||||
$this->assertSame($myEM, $this->_emf->getEntityManager('SomeEntity'));
|
|
||||||
$this->_emf->releaseEntityManager($myEM);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testStaticLookup()
|
|
||||||
{
|
|
||||||
$this->assertTrue(Doctrine_EntityManagerFactory::getManager() instanceof Doctrine_EntityManager);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
@ -1,13 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
require_once 'lib/DoctrineTestInit.php';
|
||||||
|
|
||||||
#namespace Doctrine::Tests::ORM;
|
#namespace Doctrine\Tests\ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EntityManager tests.
|
* EntityManager tests.
|
||||||
*/
|
*/
|
||||||
class Orm_EntityManagerTest extends Doctrine_OrmTestCase
|
class Orm_EntityManagerTest extends Doctrine_OrmTestCase
|
||||||
{
|
{
|
||||||
|
private $_em;
|
||||||
|
|
||||||
|
function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
$this->_em = $this->_getTestEntityManager();
|
||||||
|
}
|
||||||
|
|
||||||
public function testSettingInvalidFlushModeThrowsException()
|
public function testSettingInvalidFlushModeThrowsException()
|
||||||
{
|
{
|
||||||
$prev = $this->_em->getFlushMode();
|
$prev = $this->_em->getFlushMode();
|
||||||
|
@ -7,9 +7,12 @@ require_once 'lib/mocks/Doctrine_HydratorMockStatement.php';
|
|||||||
|
|
||||||
class Orm_Hydration_BasicHydrationTest extends Doctrine_OrmTestCase
|
class Orm_Hydration_BasicHydrationTest extends Doctrine_OrmTestCase
|
||||||
{
|
{
|
||||||
|
private $_em;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
$this->_em = $this->_getTestEntityManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Getter for the hydration mode dataProvider */
|
/** Getter for the hydration mode dataProvider */
|
||||||
|
@ -36,6 +36,12 @@ require_once 'lib/DoctrineTestInit.php';
|
|||||||
*/
|
*/
|
||||||
class Orm_Query_IdentifierRecognitionTest extends Doctrine_OrmTestCase
|
class Orm_Query_IdentifierRecognitionTest extends Doctrine_OrmTestCase
|
||||||
{
|
{
|
||||||
|
private $_em;
|
||||||
|
|
||||||
|
protected function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
$this->_em = $this->_getTestEntityManager();
|
||||||
|
}
|
||||||
|
|
||||||
public function testSingleAliasDeclarationIsSupported()
|
public function testSingleAliasDeclarationIsSupported()
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\ORM;
|
||||||
|
|
||||||
require_once 'lib/DoctrineTestInit.php';
|
require_once 'lib/DoctrineTestInit.php';
|
||||||
require_once 'lib/mocks/Doctrine_EntityManagerMock.php';
|
require_once 'lib/mocks/Doctrine_EntityManagerMock.php';
|
||||||
require_once 'lib/mocks/Doctrine_ConnectionMock.php';
|
require_once 'lib/mocks/Doctrine_ConnectionMock.php';
|
||||||
@ -7,25 +10,20 @@ require_once 'lib/mocks/Doctrine_IdentityIdGeneratorMock.php';
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* UnitOfWork tests.
|
* UnitOfWork tests.
|
||||||
* These tests run without a database through mocking the
|
|
||||||
* persister/connection/sequence used by the UnitOfWork.
|
|
||||||
*/
|
*/
|
||||||
class Orm_UnitOfWorkTest extends Doctrine_OrmTestCase
|
class Orm_UnitOfWorkTest extends Doctrine_OrmTestCase
|
||||||
{
|
{
|
||||||
|
// SUT
|
||||||
private $_unitOfWork;
|
private $_unitOfWork;
|
||||||
|
|
||||||
// Mocks
|
|
||||||
|
|
||||||
// Provides a sequence mock to the UnitOfWork
|
// Provides a sequence mock to the UnitOfWork
|
||||||
private $_connectionMock;
|
private $_connectionMock;
|
||||||
// The EntityManager mock that provides the mock persister
|
// The EntityManager mock that provides the mock persisters
|
||||||
private $_emMock;
|
private $_emMock;
|
||||||
|
|
||||||
protected function setUp() {
|
protected function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->_connectionMock = new Doctrine_ConnectionMock(array());
|
$this->_connectionMock = new Doctrine_ConnectionMock(array());
|
||||||
$this->_emMock = Doctrine_EntityManagerMock::create($this->_connectionMock, "uowMockEm");
|
$this->_emMock = Doctrine_EntityManagerMock::create($this->_connectionMock, "uowMockEm");
|
||||||
|
|
||||||
// SUT
|
// SUT
|
||||||
$this->_unitOfWork = new Doctrine_UnitOfWorkMock($this->_emMock);
|
$this->_unitOfWork = new Doctrine_UnitOfWorkMock($this->_emMock);
|
||||||
$this->_emMock->setUnitOfWork($this->_unitOfWork);
|
$this->_emMock->setUnitOfWork($this->_unitOfWork);
|
||||||
@ -136,6 +134,7 @@ class Orm_UnitOfWorkTest extends Doctrine_OrmTestCase
|
|||||||
// Fake managed state
|
// Fake managed state
|
||||||
$this->_unitOfWork->setEntityState($user2, Doctrine_ORM_UnitOfWork::STATE_MANAGED);
|
$this->_unitOfWork->setEntityState($user2, Doctrine_ORM_UnitOfWork::STATE_MANAGED);
|
||||||
|
|
||||||
|
// Fake original entity date
|
||||||
$this->_unitOfWork->setOriginalEntityData($user1, array(
|
$this->_unitOfWork->setOriginalEntityData($user1, array(
|
||||||
'id' => 1, 'username' => 'roman'
|
'id' => 1, 'username' => 'roman'
|
||||||
));
|
));
|
||||||
@ -143,8 +142,10 @@ class Orm_UnitOfWorkTest extends Doctrine_OrmTestCase
|
|||||||
'id' => 2, 'username' => 'jon'
|
'id' => 2, 'username' => 'jon'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// Go
|
||||||
$this->_unitOfWork->computeDataChangeSet(array($user1, $user2));
|
$this->_unitOfWork->computeDataChangeSet(array($user1, $user2));
|
||||||
|
|
||||||
|
// Verify
|
||||||
$user1ChangeSet = $this->_unitOfWork->getDataChangeSet($user1);
|
$user1ChangeSet = $this->_unitOfWork->getDataChangeSet($user1);
|
||||||
$this->assertTrue(is_array($user1ChangeSet));
|
$this->assertTrue(is_array($user1ChangeSet));
|
||||||
$this->assertEquals(2, count($user1ChangeSet));
|
$this->assertEquals(2, count($user1ChangeSet));
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* This file bootstraps the test environment.
|
||||||
|
*/
|
||||||
|
|
||||||
require_once 'PHPUnit/Framework.php';
|
require_once 'PHPUnit/Framework.php';
|
||||||
require_once 'PHPUnit/TextUI/TestRunner.php';
|
require_once 'PHPUnit/TextUI/TestRunner.php';
|
||||||
|
|
||||||
//require_once '../lib/Doctrine.php';
|
|
||||||
require_once '../lib/Doctrine/Common/ClassLoader.php';
|
require_once '../lib/Doctrine/Common/ClassLoader.php';
|
||||||
|
|
||||||
$classLoader = new Doctrine_Common_ClassLoader();
|
$classLoader = new Doctrine_Common_ClassLoader();
|
||||||
|
@ -1,23 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base testcase class for all dbal testcases.
|
* Base testcase class for all dbal testcases.
|
||||||
*/
|
*/
|
||||||
class Doctrine_DbalTestCase extends Doctrine_TestCase
|
class Doctrine_DbalTestCase extends Doctrine_TestCase
|
||||||
{
|
{
|
||||||
protected $_conn;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* setUp()
|
|
||||||
*/
|
|
||||||
protected function setUp()
|
|
||||||
{
|
|
||||||
// Setup a db connection if there is none, yet. This makes it possible
|
|
||||||
// to run tests that use a connection standalone.
|
|
||||||
if (isset($this->sharedFixture['conn'])) {
|
|
||||||
$this->_conn = $this->sharedFixture['conn'];
|
|
||||||
} else {
|
|
||||||
$this->sharedFixture['conn'] = Doctrine_TestUtil::getConnection();
|
|
||||||
$this->_conn = $this->sharedFixture['conn'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,19 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The outermost test suite for all dbal related testcases & suites.
|
* The outermost test suite for all dbal related testcases & suites.
|
||||||
*
|
|
||||||
* Currently the dbal suite uses a normal connection object, too, just like the orm suite.
|
|
||||||
* Upon separation of the DBAL and ORM package this suite should just use a DBAL
|
|
||||||
* connection in the shared fixture.
|
|
||||||
*/
|
*/
|
||||||
class Doctrine_DbalTestSuite extends Doctrine_TestSuite
|
class Doctrine_DbalTestSuite extends Doctrine_TestSuite
|
||||||
{
|
{
|
||||||
|
|
||||||
protected function setUp()
|
|
||||||
{
|
|
||||||
$this->sharedFixture['conn'] = Doctrine_TestUtil::getConnection();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function tearDown()
|
|
||||||
{}
|
|
||||||
}
|
}
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base testcase class for all orm testcases.
|
* Base testcase class for all orm testcases.
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The outermost test suite for all orm related testcases & suites.
|
* The outermost test suite for all orm related testcases & suites.
|
||||||
*
|
*
|
||||||
|
@ -1,31 +1,29 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
require_once 'lib/mocks/Doctrine_DriverMock.php';
|
require_once 'lib/mocks/Doctrine_DriverMock.php';
|
||||||
require_once 'lib/mocks/Doctrine_ConnectionMock.php';
|
require_once 'lib/mocks/Doctrine_ConnectionMock.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base testcase class for all orm testcases.
|
* Base testcase class for all ORM testcases.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
class Doctrine_OrmTestCase extends Doctrine_TestCase
|
class Doctrine_OrmTestCase extends Doctrine_TestCase
|
||||||
{
|
{
|
||||||
protected $_em;
|
/**
|
||||||
|
* Creates an EntityManager for testing purposes.
|
||||||
protected function setUp() {
|
*
|
||||||
if (isset($this->sharedFixture['em'])) {
|
* @return Doctrine\ORM\EntityManager
|
||||||
$this->_em = $this->sharedFixture['em'];
|
*/
|
||||||
} else {
|
protected function _getTestEntityManager($conf = null, $eventManager = null) {
|
||||||
$config = new Doctrine_ORM_Configuration();
|
$config = new Doctrine_ORM_Configuration();
|
||||||
$eventManager = new Doctrine_Common_EventManager();
|
$eventManager = new Doctrine_Common_EventManager();
|
||||||
$connectionOptions = array(
|
$connectionOptions = array(
|
||||||
'driverClass' => 'Doctrine_DriverMock',
|
'driverClass' => 'Doctrine_DriverMock',
|
||||||
'wrapperClass' => 'Doctrine_ConnectionMock',
|
'wrapperClass' => 'Doctrine_ConnectionMock',
|
||||||
'user' => 'john',
|
'user' => 'john',
|
||||||
'password' => 'wayne'
|
'password' => 'wayne'
|
||||||
);
|
);
|
||||||
$em = Doctrine_ORM_EntityManager::create($connectionOptions, 'mockEM', $config, $eventManager);
|
return Doctrine_ORM_EntityManager::create($connectionOptions, 'mockEM', $config, $eventManager);
|
||||||
$this->_em = $em;
|
|
||||||
}
|
|
||||||
$this->_em->activate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,27 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The outermost test suite for all orm related testcases & suites.
|
* The outermost test suite for all orm related testcases & suites.
|
||||||
*
|
|
||||||
* Currently the orm suite uses a normal connection object.
|
|
||||||
* Upon separation of the DBAL and ORM package this suite should just use a orm
|
|
||||||
* connection/session/manager instance as the shared fixture.
|
|
||||||
*/
|
*/
|
||||||
class Doctrine_OrmTestSuite extends Doctrine_TestSuite
|
class Doctrine_OrmTestSuite extends Doctrine_TestSuite
|
||||||
{
|
{
|
||||||
protected function setUp()
|
|
||||||
{
|
|
||||||
$config = new Doctrine_ORM_Configuration();
|
|
||||||
$eventManager = new Doctrine_Common_EventManager();
|
|
||||||
$connectionOptions = array(
|
|
||||||
'driverClass' => 'Doctrine_DriverMock',
|
|
||||||
'wrapperClass' => 'Doctrine_ConnectionMock',
|
|
||||||
'user' => 'john',
|
|
||||||
'password' => 'wayne'
|
|
||||||
);
|
|
||||||
$em = Doctrine_ORM_EntityManager::create($connectionOptions, 'mockEM', $config, $eventManager);
|
|
||||||
$this->sharedFixture['em'] = $em;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function tearDown()
|
|
||||||
{}
|
|
||||||
}
|
}
|
@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base testcase class for all Doctrine testcases.
|
* Base testcase class for all Doctrine testcases.
|
||||||
*/
|
*/
|
||||||
class Doctrine_TestCase extends PHPUnit_Framework_TestCase
|
class Doctrine_TestCase extends PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -1,9 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Doctrine's basic test suite implementation. Provides functionality needed by all
|
* Doctrine's basic test suite implementation. Provides functionality needed by all
|
||||||
* test suites.
|
* test suites.
|
||||||
*/
|
*/
|
||||||
class Doctrine_TestSuite extends PHPUnit_Framework_TestSuite
|
class Doctrine_TestSuite extends PHPUnit_Framework_TestSuite
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests;
|
||||||
|
|
||||||
class Doctrine_TestUtil
|
class Doctrine_TestUtil
|
||||||
{
|
{
|
||||||
public static function getConnection()
|
public static function getConnection()
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
class Doctrine_ClassMetadataMock extends Doctrine_ORM_Mapping_ClassMetadata
|
class Doctrine_ClassMetadataMock extends Doctrine_ORM_Mapping_ClassMetadata
|
||||||
{
|
{
|
||||||
/* Mock API */
|
/* Mock API */
|
||||||
@ -10,4 +12,3 @@ class Doctrine_ClassMetadataMock extends Doctrine_ORM_Mapping_ClassMetadata
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,5 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
|
#use Doctrine\DBAL\Connection;
|
||||||
|
|
||||||
require_once 'lib/mocks/Doctrine_SequenceMock.php';
|
require_once 'lib/mocks/Doctrine_SequenceMock.php';
|
||||||
require_once 'lib/mocks/Doctrine_DatabasePlatformMock.php';
|
require_once 'lib/mocks/Doctrine_DatabasePlatformMock.php';
|
||||||
|
|
||||||
@ -73,4 +77,3 @@ class Doctrine_ConnectionMock extends Doctrine_DBAL_Connection
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,5 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
|
#use Doctrine\DBAL\Platforms\AbstractPlatform;
|
||||||
|
|
||||||
class Doctrine_DatabasePlatformMock extends Doctrine_DBAL_Platforms_AbstractPlatform
|
class Doctrine_DatabasePlatformMock extends Doctrine_DBAL_Platforms_AbstractPlatform
|
||||||
{
|
{
|
||||||
private $_prefersIdentityColumns = false;
|
private $_prefersIdentityColumns = false;
|
||||||
@ -30,4 +34,3 @@ class Doctrine_DatabasePlatformMock extends Doctrine_DBAL_Platforms_AbstractPlat
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
class Doctrine_DriverConnectionMock implements Doctrine_DBAL_Driver_Connection
|
class Doctrine_DriverConnectionMock implements Doctrine_DBAL_Driver_Connection
|
||||||
{
|
{
|
||||||
public function prepare($prepareString) {}
|
public function prepare($prepareString) {}
|
||||||
@ -14,4 +16,3 @@ class Doctrine_DriverConnectionMock implements Doctrine_DBAL_Driver_Connection
|
|||||||
public function errorInfo() {}
|
public function errorInfo() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
require_once 'lib/mocks/Doctrine_DriverConnectionMock.php';
|
require_once 'lib/mocks/Doctrine_DriverConnectionMock.php';
|
||||||
require_once 'lib/mocks/Doctrine_DatabasePlatformMock.php';
|
require_once 'lib/mocks/Doctrine_DatabasePlatformMock.php';
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
require_once 'lib/mocks/Doctrine_EntityPersisterMock.php';
|
require_once 'lib/mocks/Doctrine_EntityPersisterMock.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,4 +90,3 @@ class Doctrine_EntityManagerMock extends Doctrine_ORM_EntityManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EntityPersister implementation used for mocking during tests.
|
* EntityPersister implementation used for mocking during tests.
|
||||||
*/
|
*/
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is a mock of the PDOStatement class that can be passed in to the Hydrator
|
* This class is a mock of the PDOStatement class that can be passed in to the Hydrator
|
||||||
* to test the hydration standalone with faked result sets.
|
* to test the hydration standalone with faked result sets.
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
|
||||||
* To change this template, choose Tools | Templates
|
#namespace Doctrine\Tests\Mocks;
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of Doctrine_IdentityIdGeneratorMock
|
* Description of Doctrine_IdentityIdGeneratorMock
|
||||||
@ -17,4 +15,4 @@ class Doctrine_IdentityIdGeneratorMock extends Doctrine_ORM_Id_IdentityGenerator
|
|||||||
$this->_mockPostInsertId = $id;
|
$this->_mockPostInsertId = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Mocks;
|
||||||
|
|
||||||
class Doctrine_SequenceMock extends Doctrine_ORM_Id_SequenceGenerator
|
class Doctrine_SequenceMock extends Doctrine_ORM_Id_SequenceGenerator
|
||||||
{
|
{
|
||||||
private $_sequenceNumber = 0;
|
private $_sequenceNumber = 0;
|
||||||
@ -52,4 +54,3 @@ class Doctrine_SequenceMock extends Doctrine_ORM_Id_SequenceGenerator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
|
||||||
* To change this template, choose Tools | Templates
|
#namespace Doctrine\Tests\Mocks;
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of Doctrine_UnitOfWorkMock
|
* Description of Doctrine_UnitOfWorkMock
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
class ForumAdministrator extends ForumUser
|
class ForumAdministrator extends ForumUser
|
||||||
{
|
{
|
||||||
public $accessLevel;
|
public $accessLevel;
|
||||||
|
@ -1,18 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
#namespace Doctrine\Tests\ORM\Models\Forum;
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
#use Doctrine\ORM\Entity;
|
#use Doctrine\ORM\Entity;
|
||||||
#use Doctrine\Common\VirtualPropertySystem;
|
|
||||||
|
|
||||||
class ForumAvatar
|
class ForumAvatar
|
||||||
{
|
{
|
||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/*static function construct() {
|
|
||||||
Doctrine_Common_VirtualPropertySystem::register(__CLASS__, 'id', 'int');
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public static function initMetadata($mapping)
|
public static function initMetadata($mapping)
|
||||||
{
|
{
|
||||||
$mapping->mapField(array(
|
$mapping->mapField(array(
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
class ForumBoard
|
class ForumBoard
|
||||||
{
|
{
|
||||||
public $id;
|
public $id;
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
class ForumCategory
|
class ForumCategory
|
||||||
{
|
{
|
||||||
private $id;
|
private $id;
|
||||||
|
@ -1,19 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
#namespace Doctrine::Test::ORM::Models;
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
#use Doctrine::ORM::Entity;
|
#use Doctrine\ORM\Entity;
|
||||||
|
|
||||||
class ForumEntry extends Doctrine_ORM_Entity
|
class ForumEntry implements Doctrine_ORM_Entity
|
||||||
{
|
{
|
||||||
public $id;
|
public $id;
|
||||||
public $topic;
|
public $topic;
|
||||||
|
|
||||||
static function construct() {
|
|
||||||
Doctrine_Common_VirtualPropertySystem::register(__CLASS__, 'id', 'int');
|
|
||||||
Doctrine_Common_VirtualPropertySystem::register(__CLASS__, 'topic', 'string');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function initMetadata($mapping)
|
public static function initMetadata($mapping)
|
||||||
{
|
{
|
||||||
$mapping->mapField(array(
|
$mapping->mapField(array(
|
||||||
@ -33,4 +28,3 @@ class ForumEntry extends Doctrine_ORM_Entity
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
|
@ -1,9 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
#namespace Doctrine\Tests\ORM\Models\Forum;
|
#namespace Doctrine\Tests\Models\Forum;
|
||||||
|
|
||||||
#use Doctrine\ORM\Entity;
|
#use Doctrine\ORM\Entity;
|
||||||
#use Doctrine\Common\VirtualPropertySystem;
|
|
||||||
|
|
||||||
class ForumUser
|
class ForumUser
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user