57 lines
1.4 KiB
ReStructuredText
57 lines
1.4 KiB
ReStructuredText
|
|
.. include:: /Includes.rst.txt
|
|
|
|
.. _breaking-66429:
|
|
|
|
======================================================
|
|
Breaking: #66429 - Remove IdentityMap from persistence
|
|
======================================================
|
|
|
|
See :issue:`66429`
|
|
|
|
Description
|
|
===========
|
|
|
|
The `IdentityMap` class and its usage has been removed from the Extbase persistence.
|
|
|
|
|
|
Impact
|
|
======
|
|
|
|
Upgraded installations will throw a `ReflectionException`. Accessing the previously existing `IdentityMap`
|
|
properties within `DataMapper` and `Repository` will now fail. Creating `IdentityMap` instances is not possible
|
|
anymore.
|
|
|
|
|
|
Affected Installations
|
|
======================
|
|
|
|
All installations, especially extensions using the `IdentityMap` class directly or accessing the properties within
|
|
`DataMapper` or `Repository`.
|
|
|
|
|
|
Migration
|
|
=========
|
|
|
|
The Extbase reflection cache of existing installations needs to be cleared once.
|
|
|
|
Existing code can be migrated to the persistence `Session` class which provides a drop-in replacement for the
|
|
`IdentityMap`.
|
|
|
|
|
|
Usage example
|
|
=============
|
|
|
|
How to use the `Session` class to retrieve objects by an identifier:
|
|
|
|
.. code-block:: php
|
|
|
|
$session = GeneralUtility::makeInstance(ObjectManager::class)->get(\TYPO3\CMS\Extbase\Persistence\Generic\Session::class);
|
|
$session->registerObject($object, $identifier);
|
|
if ($session->hasIdentifier($identifier)) {
|
|
$object = $session->getObjectByIdentifier($identifier, $className);
|
|
}
|
|
|
|
|
|
.. index:: PHP-API, ext:extbase
|