Instead of deprecating the interface it is sufficient to deprecate its getReachableRoles() method and add a new getReachableRoleNames() method in Symfony 5.
5.5 KiB
UPGRADE FROM 4.2 to 4.3
BrowserKit
- Renamed
Client
toAbstractBrowser
- Marked
Response
final. - Deprecated
Response::buildHeader()
- Deprecated
Response::getStatus()
, useResponse::getStatusCode()
instead
Cache
- The
psr/simple-cache
dependency has been removed - runcomposer require psr/simple-cache
if you need it. - Deprecated all PSR-16 adapters, use
Psr16Cache
orSymfony\Contracts\Cache\CacheInterface
implementations instead. - Deprecated
SimpleCacheAdapter
, usePsr16Adapter
instead.
Config
- Deprecated using environment variables with
cannotBeEmpty()
if the value is validated withvalidate()
EventDispatcher
- The signature of the
EventDispatcherInterface::dispatch()
method should be updated todispatch($event, string $eventName = null)
, not doing so is deprecated
Form
- Using the
format
option ofDateType
andDateTimeType
when thehtml5
option is enabled is deprecated. - Using names for buttons that do not start with a letter, a digit, or an underscore is deprecated and will lead to an exception in 5.0.
- Using names for buttons that do not contain only letters, digits, underscores, hyphens, and colons is deprecated and will lead to an exception in 5.0.
- Using the
date_format
,date_widget
, andtime_widget
options of theDateTimeType
when thewidget
option is set tosingle_text
is deprecated.
FrameworkBundle
- Not passing the project directory to the constructor of the
AssetsInstallCommand
is deprecated. This argument will be mandatory in 5.0. - Deprecated the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead.
- The
generate()
method of theUrlGenerator
class can return an empty string instead of null.
HttpFoundation
- The
MimeTypeGuesserInterface
andExtensionGuesserInterface
interfaces have been deprecated, useSymfony\Component\Mime\MimeTypesInterface
instead. - The
MimeType
andMimeTypeExtensionGuesser
classes have been deprecated, useSymfony\Component\Mime\MimeTypes
instead. - The
FileBinaryMimeTypeGuesser
class has been deprecated, useSymfony\Component\Mime\FileBinaryMimeTypeGuesser
instead. - The
FileinfoMimeTypeGuesser
class has been deprecated, useSymfony\Component\Mime\FileinfoMimeTypeGuesser
instead.
HttpKernel
- Renamed
Client
toHttpKernelBrowser
- Renamed
FilterControllerArgumentsEvent
toControllerArgumentsEvent
- Renamed
FilterControllerEvent
toControllerEvent
- Renamed
FilterResponseEvent
toResponseEvent
- Renamed
GetResponseEvent
toRequestEvent
- Renamed
GetResponseForControllerResultEvent
toViewEvent
- Renamed
GetResponseForExceptionEvent
toExceptionEvent
- Renamed
PostResponseEvent
toTerminateEvent
Messenger
Amqp
transport does not throw\AMQPException
anymore, catchTransportException
instead.- Deprecated the
LoggingMiddleware
class, pass a logger toSendMessageMiddleware
instead.
Routing
- The
generator_base_class
,generator_cache_class
,matcher_base_class
, andmatcher_cache_class
router options have been deprecated. - Implementing
Serializable
forRoute
andCompiledRoute
is deprecated; if you serialize them, please ensure your unserialization logic can recover from a failure related to an updated serialization format
Security
-
The
Role
andSwitchUserRole
classes are deprecated and will be removed in 5.0. Use strings for roles instead. -
The
getReachableRoles()
method of theRoleHierarchyInterface
is deprecated and will be removed in 5.0. Role hierarchies must implement thegetReachableRoleNames()
method instead and return roles as strings. -
The
getRoles()
method of theTokenInterface
is deprecated. Tokens must implement thegetRoleNames()
method instead and return roles as strings. -
The
ListenerInterface
is deprecated, turn your listeners into callables instead. -
The
Firewall::handleRequest()
method is deprecated, useFirewall::callListeners()
instead. -
The
AbstractToken::serialize()
,AbstractToken::unserialize()
,AuthenticationException::serialize()
andAuthenticationException::unserialize()
methods are now final, usegetState()
andsetState()
instead.Before:
public function serialize() { return [$this->myLocalVar, parent::serialize()]; } public function unserialize($serialized) { [$this->myLocalVar, $parentSerialized] = unserialize($serialized); parent::unserialize($parentSerialized); }
After:
protected function getState(): array { return [$this->myLocalVar, parent::getState()]; } protected function setState(array $data) { [$this->myLocalVar, $parentData] = $data; parent::setState($parentData); }
Yaml
- Using a mapping inside a multi-line string is deprecated and will throw a
ParseException
in 5.0.
Workflow
-
MarkingStoreInterface::setMarking()
will have a third argument in Symfony 5.0.Before:
class MyMarkingStore implements MarkingStoreInterface { public function setMarking($subject, Marking $marking) { } }
After:
class MyMarkingStore implements MarkingStoreInterface { public function setMarking($subject, Marking $marking , array $context = []) { } }