class PersistenceManager extends AbstractPersistenceManager (View source)

Flow's Doctrine PersistenceManager

Properties

protected array $settings from  AbstractPersistenceManager
protected array $newObjects from  AbstractPersistenceManager
protected bool $hasUnpersistedChanges from  AbstractPersistenceManager
protected AllowedObjectsContainer $allowedObjects from  AbstractPersistenceManager
protected LoggerInterface $logger
protected ThrowableStorageInterface $throwableStorage
protected EntityManagerInterface $entityManager
protected ValidatorResolver $validatorResolver
protected ReflectionService $reflectionService

Methods

void
injectSettings(array $settings)

Injects the Flow settings, the persistence part is kept for further use.

void
clearState()

Clears the in-memory state of the persistence.

void
registerNewObject(PersistenceMagicInterface $object)

Registers an object which has been created or cloned during this request.

void
allowObject(object $object)

Adds the given object to a list of allowed objects which may be persisted even if the current HTTP request is considered a "safe" request.

array
convertObjectToIdentityArray(object $object)

Converts the given object into an array containing the identity of the domain object.

array
convertObjectsToIdentityArrays(array $array)

Recursively iterates through the given array and turns objects into an arrays containing the identity of the domain object.

bool
hasUnpersistedChanges()

Gives feedback if the persistence Manager has unpersisted changes.

void
injectLogger(LoggerInterface $logger)

Injects the (system) logger based on PSR-3.

void
persistAll(bool $onlyAllowedObjects = false)

Commits new objects and changes to objects in the current persistence session into the backend

void
persistAllowedObjects()

Commits new objects and changes to objects in the current persistence session into the backend.

bool
isNewObject(object $object)

Checks if the given object has ever been persisted.

mixed
getIdentifierByObject(object $object)

Returns the (internal) identifier for the object, if it is known to the backend. Otherwise NULL is returned.

object|null
getObjectByIdentifier(mixed $identifier, string $objectType = null, bool $useLazyLoading = false)

Returns the object with the (internal) identifier, if it is known to the backend. Otherwise NULL is returned.

createQueryForType(string $type)

Return a query object for the given type.

void
add(object $object)

Adds an object to the persistence.

void
remove(object $object)

Removes an object to the persistence.

void
update(object $object)

Update an object in the persistence.

bool
isConnected()

Returns true, if an active connection to the persistence backend has been established, e.g. entities can be persisted.

bool
compile()

Called from functional tests, creates/updates database tables and compiles proxies.

void
tearDown()

Called after a functional test in Flow, dumps everything in the database.

void
emitAllObjectsPersisted()

Signals that all persistAll() has been executed successfully.

Details

void injectSettings(array $settings)

Injects the Flow settings, the persistence part is kept for further use.

Parameters

array $settings

Return Value

void

void clearState()

Clears the in-memory state of the persistence.

Managed instances become detached, any fetches will return data directly from the persistence "backend".

Return Value

void

void registerNewObject(PersistenceMagicInterface $object)

Registers an object which has been created or cloned during this request.

The given object must contain the Persistence_Object_Identifier property, thus the PersistenceMagicInterface type hint. A "new" object does not necessarily have to be known by any repository or be persisted in the end.

Objects registered with this method must be known to the getObjectByIdentifier() method.

Parameters

PersistenceMagicInterface $object

The new object to register

Return Value

void

void allowObject(object $object)

Adds the given object to a list of allowed objects which may be persisted even if the current HTTP request is considered a "safe" request.

Parameters

object $object

The object

Return Value

void

array convertObjectToIdentityArray(object $object)

Converts the given object into an array containing the identity of the domain object.

Parameters

object $object

The object to be converted

Return Value

array

The identity array in the format array('__identity' => '...')

Exceptions

UnknownObjectException

array convertObjectsToIdentityArrays(array $array)

Recursively iterates through the given array and turns objects into an arrays containing the identity of the domain object.

Parameters

array $array

The array to be iterated over

Return Value

array

The modified array without objects

Exceptions

UnknownObjectException

bool hasUnpersistedChanges()

Gives feedback if the persistence Manager has unpersisted changes.

This is primarily used to inform the user if he tries to save data in an unsafe request.

Return Value

bool

void injectLogger(LoggerInterface $logger)

Injects the (system) logger based on PSR-3.

Parameters

LoggerInterface $logger

Return Value

void

void persistAll(bool $onlyAllowedObjects = false)

Commits new objects and changes to objects in the current persistence session into the backend

Parameters

bool $onlyAllowedObjects

Return Value

void

void persistAllowedObjects()

Commits new objects and changes to objects in the current persistence session into the backend.

An exception will be thrown if there are scheduled updates/deletes or insertions for objects that are not "allowed" (see AbstractPersistenceManager::allowObject())

Return Value

void

Exceptions

Exception

bool isNewObject(object $object)

Checks if the given object has ever been persisted.

Parameters

object $object

The object to check

Return Value

bool

true if the object is new, false if the object exists in the repository

mixed getIdentifierByObject(object $object)

Returns the (internal) identifier for the object, if it is known to the backend. Otherwise NULL is returned.

Note: this returns an identifier even if the object has not been persisted in case of AOP-managed entities. Use isNewObject() if you need to distinguish those cases.

improve try/catch block

Parameters

object $object

Return Value

mixed

The identifier for the object if it is known, or NULL

Exceptions

PropertyNotAccessibleException

object|null getObjectByIdentifier(mixed $identifier, string $objectType = null, bool $useLazyLoading = false)

Returns the object with the (internal) identifier, if it is known to the backend. Otherwise NULL is returned.

Parameters

mixed $identifier
string $objectType
bool $useLazyLoading

Set to true if you want to use lazy loading for this object

Return Value

object|null

The object for the identifier if it is known, or NULL

Exceptions

RuntimeException
ORMException

QueryInterface createQueryForType(string $type)

Return a query object for the given type.

Parameters

string $type

Return Value

QueryInterface

void add(object $object)

Adds an object to the persistence.

Parameters

object $object

The object to add

Return Value

void

Exceptions

KnownObjectException
Exception
PropertyNotAccessibleException

void remove(object $object)

Removes an object to the persistence.

Parameters

object $object

The object to remove

Return Value

void

void update(object $object)

Update an object in the persistence.

Parameters

object $object

The modified object

Return Value

void

Exceptions

UnknownObjectException
Exception
PropertyNotAccessibleException

bool isConnected()

Returns true, if an active connection to the persistence backend has been established, e.g. entities can be persisted.

Return Value

bool

true, if an connection has been established, false if add object will not be persisted by the backend

bool compile()

Called from functional tests, creates/updates database tables and compiles proxies.

Return Value

bool

Exceptions

ToolsException

void tearDown()

Called after a functional test in Flow, dumps everything in the database.

Return Value

void

protected void emitAllObjectsPersisted()

Signals that all persistAll() has been executed successfully.

Return Value

void