This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/UPGRADE-5.2.md

176 lines
6.1 KiB
Markdown

UPGRADE FROM 5.1 to 5.2
=======================
DependencyInjection
-------------------
* Deprecated `Definition::setPrivate()` and `Alias::setPrivate()`, use `setPublic()` instead
FrameworkBundle
---------------
* Deprecated the public `form.factory`, `form.type.file`, `translator`, `security.csrf.token_manager`, `serializer`,
`cache_clearer`, `filesystem` and `validator` services to private.
* If you configured the `framework.cache.prefix_seed` option, you might want to add the `%kernel.environment%` to its value to
keep cache namespaces separated by environment of the app. The `%kernel.container_class%` (which includes the environment)
used to be added by default to the seed, which is not the case anymore. This allows sharing caches between
apps or different environments.
* Deprecated the `lock.RESOURCE_NAME` and `lock.RESOURCE_NAME.store` services and the `lock`, `LockInterface`, `lock.store` and `PersistingStoreInterface` aliases, use `lock.RESOURCE_NAME.factory`, `lock.factory` or `LockFactory` instead.
Form
----
* Deprecated `PropertyPathMapper` in favor of `DataMapper` and `PropertyPathAccessor`.
Before:
```php
use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper;
$builder->setDataMapper(new PropertyPathMapper());
```
After:
```php
use Symfony\Component\Form\Extension\Core\DataAccessor\PropertyPathAccessor;
use Symfony\Component\Form\Extension\Core\DataMapper\DataMapper;
$builder->setDataMapper(new DataMapper(new PropertyPathAccessor()));
```
HttpFoundation
--------------
* Deprecated not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()`; wrap your filter in a closure instead.
* Deprecated the `Request::HEADER_X_FORWARDED_ALL` constant, use either `Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO` or `Request::HEADER_X_FORWARDED_AWS_ELB` or `Request::HEADER_X_FORWARDED_TRAEFIK`constants instead.
* Deprecated `BinaryFileResponse::create()`, use `__construct()` instead
Lock
----
* `MongoDbStore` does not implement `BlockingStoreInterface` anymore, typehint against `PersistingStoreInterface` instead.
* deprecated `NotSupportedException`, it shouldn't be thrown anymore.
* deprecated `RetryTillSaveStore`, logic has been moved in `Lock` and is not needed anymore.
Mime
----
* Deprecated `Address::fromString()`, use `Address::create()` instead
Monolog
-------
* The `$actionLevel` constructor argument of `Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy` has been deprecated and replaced by the `$inner` one which expects an ActivationStrategyInterface to decorate instead. `Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy` will become final in 6.0.
* The `$actionLevel` constructor argument of `Symfony\Bridge\Monolog\Handler\FingersCrossed\HttpCodeActivationStrategy` has been deprecated and replaced by the `$inner` one which expects an ActivationStrategyInterface to decorate instead. `Symfony\Bridge\Monolog\Handler\FingersCrossed\HttpCodeActivationStrategy` will become final in 6.0
Notifier
--------
* [BC BREAK] The `TransportInterface::send()` and `AbstractTransport::doSend()` methods changed to return a `?SentMessage` instance instead of `void`.
* [BC BREAK] Changed the type-hint of the `$recipient` argument in the `as*Message()` method
of `EmailNotificationInterface` and `SmsNotificationInterface` to `EmailRecipientInterface`
and `SmsRecipientInterface`.
* [BC BREAK] Removed the `AdminRecipient`.
* [BC BREAK] Changed the type-hint of the `$recipient` argument in `NotifierInterface::send()`,
`Notifier::getChannels()`, `ChannelInterface::notifiy()` and `ChannelInterface::supports()` to
`RecipientInterface`.
PropertyAccess
--------------
* Deprecated passing a boolean as the first argument of `PropertyAccessor::__construct()`.
Pass a combination of bitwise flags instead.
PropertyInfo
------------
* Deprecated the `enable_magic_call_extraction` context option in `ReflectionExtractor::getWriteInfo()` and `ReflectionExtractor::getReadInfo()` in favor of `enable_magic_methods_extraction`.
TwigBundle
----------
* Deprecated the public `twig` service to private.
TwigBridge
----------
* Changed 2nd argument type of `TranslationExtension::__construct()` to `TranslationNodeVisitor`
Validator
---------
* Deprecated the `allowEmptyString` option of the `Length` constraint.
Before:
```php
use Symfony\Component\Validator\Constraints as Assert;
/**
* @Assert\Length(min=5, allowEmptyString=true)
*/
```
After:
```php
use Symfony\Component\Validator\Constraints as Assert;
/**
* @Assert\AtLeastOneOf({
* @Assert\Blank(),
* @Assert\Length(min=5)
* })
*/
```
* Deprecated the `NumberConstraintTrait` trait.
* Deprecated setting a Doctrine annotation reader via `ValidatorBuilder::enableAnnotationMapping()`
Before:
```php
$builder->enableAnnotationMapping($reader);
```
After:
```php
$builder->enableAnnotationMapping(true)
->setDoctrineAnnotationReader($reader);
```
* Deprecated creating a Doctrine annotation reader via `ValidatorBuilder::enableAnnotationMapping()`
Before:
```php
$builder->enableAnnotationMapping();
```
After:
```php
$builder->enableAnnotationMapping(true)
->addDefaultDoctrineAnnotationReader();
```
Security
--------
* [BC break] In the experimental authenticator-based system, * `TokenInterface::getUser()`
returns `null` in case of unauthenticated session.
* [BC break] `AccessListener::PUBLIC_ACCESS` has been removed in favor of
`AuthenticatedVoter::PUBLIC_ACCESS`.
* Deprecated `setProviderKey()`/`getProviderKey()` in favor of `setFirewallName()/getFirewallName()`
in `PreAuthenticatedToken`, `RememberMeToken`, `SwitchUserToken`, `UsernamePasswordToken`,
`DefaultAuthenticationSuccessHandler`, the old methods will be removed in 6.0.
* Deprecated the `AbstractRememberMeServices::$providerKey` property in favor of
`AbstractRememberMeServices::$firewallName`, the old property will be removed
in 6.0.