155 lines
5.0 KiB
Markdown
155 lines
5.0 KiB
Markdown
|
Note about upgrading: Doctrine uses static and runtime mechanisms to raise
|
||
|
awareness about deprecated code.
|
||
|
|
||
|
- Use of `@deprecated` docblock 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 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.
|
||
|
- `ClassMetadataFactory` methods now require their `$className` argument 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()`.
|
||
|
|
||
|
```diff
|
||
|
- 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:
|
||
|
|
||
|
```php
|
||
|
$objectManager->find('MyPackage:MyClass', $id);
|
||
|
$objectManager->createQuery('SELECT u FROM MyPackage:MyClass');
|
||
|
```
|
||
|
|
||
|
After:
|
||
|
|
||
|
```php
|
||
|
$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.
|