6.3 KiB
Note about upgrading: Doctrine uses static and runtime mechanisms to raise awareness about deprecated code.
- Use of
@deprecateddocblock that is detected by IDEs (like PHPStorm) or Static Analysis tools (like Psalm, phpstan) - Use of our low-overhead runtime deprecation API, details: https://github.com/doctrine/deprecations/
Upgrade to 4.0
BC Break: Removed StaticReflectionService
The class Doctrine\Persistence\Mapping\StaticReflectionService is removed
without replacement.
BC Break: Narrowed ReflectionService::getClass() return type
The return type of ReflectionService::getClass() has been narrowed so that
null is no longer a valid return value.
BC Break: Added ObjectManager::isUninitializedObject()
Classes implementing Doctrine\Persistence\ObjectManager must implement this
new method.
BC Break: Added type declarations
The code base is now fully typed, meaning properties, parameters and return type declarations have been added to all types.
BC Break: Dropped support for Common proxies
Proxy objects implementing the Doctrine\Common\Proxy\Proxy interface are not
supported anymore. Implement Doctrine\Persistence\Proxy instead.
BC Break: Removed deprecated ReflectionProperty overrides
Deprecated classes have been removed:
Doctrine\Persistence\Reflection\RuntimePublicReflectionPropertyDoctrine\Persistence\Reflection\TypedNoDefaultRuntimePublicReflectionProperty
Upgrade to 3.4
Deprecated StaticReflectionService
The class Doctrine\Persistence\Mapping\StaticReflectionService is deprecated
without replacement.
Upgrade to 3.3
Added method ObjectManager::isUninitializedObject()
Classes implementing Doctrine\Persistence\ObjectManager should implement the new
method. This method will be added to the interface in 4.0.
Upgrade to 3.1
Deprecated RuntimePublicReflectionProperty
Use RuntimeReflectionProperty instead.
Upgrade to 3.0
Removed OnClearEventArgs::clearsAllEntities() and OnClearEventArgs::getEntityClass()
These methods only make sense when partially clearing the object manager, which
is no longer possible.
The second argument of the constructor of OnClearEventArgs is removed as well.
BC Break: removed ObjectManagerAware
Implement active record style functionality directly in your application, by
using a postLoad event.
BC Break: removed AnnotationDriver
Use ColocatedMappingDriver instead.
BC Break: Removed MappingException::pathRequired()
Use MappingException::pathRequiredForDriver() instead.
BC Break: removed LifecycleEventArgs::getEntity()
Use LifecycleEventArgs::getObject() instead.
BC Break: removed support for short namespace aliases
AbstractClassMetadataFactory::getFqcnFromAlias()is removed.ClassMetadataFactorymethods now require their$classNameargument to be an actual FQCN.
BC Break: removed ObjectManager::merge()
ObjectManagerDecorator::merge() is removed without replacement.
BC Break: removed support for doctrine/cache
Removed support for using doctrine/cache for metadata caching. The
setCacheDriver and getCacheDriver methods have been removed from
Doctrine\Persistence\Mapping\AbstractMetadata. Please use getCache and
setCache with a PSR-6 implementation instead.
BC Break: changed signatures
$objectName has been dropped from the signature of ObjectManager::clear().
- public function clear($objectName = null)
+ public function clear(): void
Also, native parameter type declarations have been added on all public APIs. Native return type declarations have not been added so that it is possible to implement types compatible with both 2.x and 3.x.
BC Break: Removed PersistentObject
Please implement this functionality directly in your application if you want ActiveRecord style functionality.
Upgrade to 2.5
Deprecated OnClearEventArgs::clearsAllEntities() and OnClearEventArgs::getEntityClass()
These methods only make sense when partially clearing the object manager, which
is deprecated.
Passing a second argument to the constructor of OnClearEventArgs is
deprecated as well.
Deprecated ObjectManagerAware
Along with deprecating PersistentObject, deprecating ObjectManagerAware
means deprecating support for active record, which already came with a word of
warning. Please implement this directly in your application with a postLoad
event if you need active record style functionality.
Deprecated MappingException::pathRequired()
MappingException::pathRequiredForDriver() should be used instead.
Upgrade to 2.4
Deprecated AnnotationDriver
Since attributes were introduced in PHP 8.0, annotations are deprecated.
AnnotationDriver is an abstract class that is used when implementing concrete
annotation drivers in dependent packages. It is deprecated in favor of using
ColocatedMappingDriver to implement both annotation and attribute based
drivers. This will involve implementing isTransient() as well as
__construct() and getReader() to retain backward compatibility.
Upgrade to 2.3
Deprecated using short namespace alias syntax in favor of ::class syntax.
Before:
$objectManager->find('MyPackage:MyClass', $id);
$objectManager->createQuery('SELECT u FROM MyPackage:MyClass');
After:
$objectManager->find(MyClass::class, $id);
$objectManager->createQuery('SELECT u FROM '. MyClass::class);
Upgrade to 2.2
Deprecated doctrine/cache usage for metadata caching
The setCacheDriver and getCacheDriver methods in
Doctrine\Persistence\Mapping\AbstractMetadata have been deprecated. Please
use getCache and setCache with a PSR-6 implementation instead. Note that
even after switching to PSR-6, getCacheDriver will return a cache instance
that wraps the PSR-6 cache. Note that if you use a custom implementation of
doctrine/cache, the library may not be able to provide a forward compatibility
layer. The cache implementation MUST extend the
Doctrine\Common\Cache\CacheProvider class.
Upgrade to 1.2
Deprecated ObjectManager::merge() and ObjectManager::detach()
Please handle merge operations in your application, and use
ObjectManager::clear() instead.
Deprecated PersistentObject
Please implement this functionality directly in your application if you want ActiveRecord style functionality.