2015-08-17 17:00:26 -07:00
< ? php
namespace Doctrine\Common\Persistence ;
2018-11-23 12:29:20 +00:00
use Doctrine\Common\Persistence\Mapping\ClassMetadata ;
use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory ;
2015-08-17 17:00:26 -07:00
/**
* Contract for a Doctrine persistence layer ObjectManager class to implement .
*/
interface ObjectManager
{
/**
* Finds an object by its identifier .
*
* This is just a convenient shortcut for getRepository ( $className ) -> find ( $id ) .
*
* @ param string $className The class name of the object to find .
* @ param mixed $id The identity of the object to find .
*
2018-11-23 12:29:20 +00:00
* @ return object | null The found object .
2015-08-17 17:00:26 -07:00
*/
public function find ( $className , $id );
/**
* Tells the ObjectManager to make an instance managed and persistent .
*
* The object will be entered into the database as a result of the flush operation .
*
* NOTE : The persist operation always considers objects that are not yet known to
* this ObjectManager as NEW . Do not pass detached objects to the persist operation .
*
* @ param object $object The instance to make managed and persistent .
*
* @ return void
*/
public function persist ( $object );
/**
* Removes an object instance .
*
* A removed object will be removed from the database as a result of the flush operation .
*
* @ param object $object The object instance to remove .
*
* @ return void
*/
public function remove ( $object );
/**
* Merges the state of a detached object into the persistence context
* of this ObjectManager and returns the managed copy of the object .
* The object passed to merge will not become associated / managed with this ObjectManager .
*
* @ param object $object
*
* @ return object
*/
public function merge ( $object );
/**
* Clears the ObjectManager . All objects that are currently managed
* by this ObjectManager become detached .
*
* @ param string | null $objectName if given , only objects of this type will get detached .
*
* @ return void
*/
public function clear ( $objectName = null );
/**
* Detaches an object from the ObjectManager , causing a managed object to
* become detached . Unflushed changes made to the object if any
* ( including removal of the object ), will not be synchronized to the database .
* Objects which previously referenced the detached object will continue to
* reference it .
*
* @ param object $object The object to detach .
*
* @ return void
*/
public function detach ( $object );
/**
* Refreshes the persistent state of an object from the database ,
* overriding any local changes that have not yet been persisted .
*
* @ param object $object The object to refresh .
*
* @ return void
*/
public function refresh ( $object );
/**
* Flushes all changes to objects that have been queued up to now to the database .
* This effectively synchronizes the in - memory state of managed objects with the
* database .
*
* @ return void
*/
public function flush ();
/**
* Gets the repository for a class .
*
* @ param string $className
*
2018-11-23 12:29:20 +00:00
* @ return ObjectRepository
2015-08-17 17:00:26 -07:00
*/
public function getRepository ( $className );
/**
* Returns the ClassMetadata descriptor for a class .
*
* The class name must be the fully - qualified class name without a leading backslash
* ( as it is returned by get_class ( $obj )) .
*
* @ param string $className
*
2018-11-23 12:29:20 +00:00
* @ return ClassMetadata
2015-08-17 17:00:26 -07:00
*/
public function getClassMetadata ( $className );
/**
* Gets the metadata factory used to gather the metadata of classes .
*
2018-11-23 12:29:20 +00:00
* @ return ClassMetadataFactory
2015-08-17 17:00:26 -07:00
*/
public function getMetadataFactory ();
/**
* Helper method to initialize a lazy loading proxy or persistent collection .
*
* This method is a no - op for other objects .
*
* @ param object $obj
*
* @ return void
*/
public function initializeObject ( $obj );
/**
* Checks if the object is part of the current UnitOfWork and therefore managed .
*
* @ param object $object
*
* @ return bool
*/
public function contains ( $object );
}