12 KiB
UPGRADE FROM 4.x to 5.0
BrowserKit
- Removed the possibility to extend
Response
by making it final. - Removed
Response::buildHeader()
- Removed
Response::getStatus()
, useResponse::getStatusCode()
instead - The
Client::submit()
method has a new$serverParameters
argument.
Cache
- Removed
CacheItem::getPreviousTags()
, useCacheItem::getMetadata()
instead.
Config
- Dropped support for constructing a
TreeBuilder
without passing root node information. - Added the
getChildNodeDefinitions()
method toParentNodeDefinitionInterface
. - The
Processor
class has been made final - Removed
FileLoaderLoadException
, useLoaderLoadException
instead. - Using environment variables with
cannotBeEmpty()
if the value is validated withvalidate()
will throw an exception.
Console
-
Removed the
setCrossingChar()
method in favor of thesetDefaultCrossingChar()
method inTableStyle
. -
Removed the
setHorizontalBorderChar()
method in favor of thesetDefaultCrossingChars()
method inTableStyle
. -
Removed the
getHorizontalBorderChar()
method in favor of thegetBorderChars()
method inTableStyle
. -
Removed the
setVerticalBorderChar()
method in favor of thesetVerticalBorderChars()
method inTableStyle
. -
Removed the
getVerticalBorderChar()
method in favor of thegetBorderChars()
method inTableStyle
. -
The
ProcessHelper::run()
method takes the command as an array of arguments.Before:
$processHelper->run($output, 'ls -l');
After:
$processHelper->run($output, array('ls', '-l')); // alternatively, when a shell wrapper is required $processHelper->run($output, Process::fromShellCommandline('ls -l'));
DependencyInjection
- Removed the
TypedReference::canBeAutoregistered()
andTypedReference::getRequiringClass()
methods. - Removed support for auto-discovered extension configuration class which does not implement
ConfigurationInterface
.
DoctrineBridge
- Deprecated injecting
ClassMetadataFactory
inDoctrineExtractor
, an instance ofEntityManagerInterface
should be injected instead
DomCrawler
- The
Crawler::children()
method has a new$selector
argument.
EventDispatcher
- The
TraceableEventDispatcherInterface
has been removed.
Finder
- The
Finder::sortByName()
method has a new$useNaturalSort
argument.
Form
-
Using the
date_format
,date_widget
, andtime_widget
options of theDateTimeType
when thewidget
option is set tosingle_text
is not supported anymore. -
The
getExtendedType()
method was removed from theFormTypeExtensionInterface
. It is replaced by the the staticgetExtendedTypes()
method which must return an iterable of extended types.Before:
class FooTypeExtension extends AbstractTypeExtension { public function getExtendedType() { return FormType::class; } // ... }
After:
class FooTypeExtension extends AbstractTypeExtension { public static function getExtendedTypes(): iterable { return array(FormType::class); } // ... }
-
The
scale
option was removed from theIntegerType
. -
The
$scale
argument of theIntegerToLocalizedStringTransformer
was removed. -
Calling
FormRenderer::searchAndRenderBlock
for fields which were already rendered throws an exception instead of returning empty strings:Before:
{% for field in fieldsWithPotentialDuplicates %} {{ form_widget(field) }} {% endfor %}
After:
{% for field in fieldsWithPotentialDuplicates if not field.rendered %} {{ form_widget(field) }} {% endfor %}
-
The
regions
option was removed from theTimezoneType
.
FrameworkBundle
-
The project dir argument of the constructor of
AssetsInstallCommand
is required. -
Removed support for
bundle:controller:action
syntax to reference controllers. UseserviceOrFqcn::method
instead whereserviceOrFqcn
is either the service ID when using controllers as services or the FQCN of the controller.Before:
bundle_controller: path: / defaults: _controller: FrameworkBundle:Redirect:redirect
After:
bundle_controller: path: / defaults: _controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
-
Removed
Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser
. -
Warming up a router in
RouterCacheWarmer
that does not implement theWarmableInterface
is not supported anymore. -
The
RequestDataCollector
class has been removed. Use theSymfony\Component\HttpKernel\DataCollector\RequestDataCollector
class instead. -
Removed
Symfony\Bundle\FrameworkBundle\Controller\Controller
. UseSymfony\Bundle\FrameworkBundle\Controller\AbstractController
instead. -
Added support for the SameSite attribute for session cookies. It is highly recommended to set this setting (
framework.session.cookie_samesite
) tolax
for increased security against CSRF attacks. -
The
ContainerAwareCommand
class has been removed, useSymfony\Component\Console\Command\Command
with dependency injection instead. -
The
Templating\Helper\TranslatorHelper::transChoice()
method has been removed, use thetrans()
one instead with a%count%
parameter. -
Removed support for legacy translations directories
src/Resources/translations/
andsrc/Resources/<BundleName>/translations/
, usetranslations/
instead. -
Support for the legacy directory structure in
translation:update
anddebug:translation
commands has been removed.
HttpFoundation
- The
$size
argument of theUploadedFile
constructor has been removed. - The
getClientSize()
method of theUploadedFile
class has been removed. - The
getSession()
method of theRequest
class throws an exception when session is null. - The default value of the "$secure" and "$samesite" arguments of Cookie's constructor changed respectively from "false" to "null" and from "null" to "lax".
HttpKernel
- The
Kernel::getRootDir()
and thekernel.root_dir
parameter have been removed - The
KernelInterface::getName()
and thekernel.name
parameter have been removed - Removed the first and second constructor argument of
ConfigDataCollector
- Removed
ConfigDataCollector::getApplicationName()
- Removed
ConfigDataCollector::getApplicationVersion()
Monolog
- The methods
DebugProcessor::getLogs()
,DebugProcessor::countErrors()
,Logger::getLogs()
andLogger::countErrors()
have a new$request
argument.
Process
-
Removed the
Process::setCommandline()
and thePhpProcess::setPhpBinary()
methods. -
Commands must be defined as arrays when creating a
Process
instance.Before:
$process = new Process('ls -l');
After:
$process = new Process(array('ls', '-l')); // alternatively, when a shell wrapper is required $process = Process::fromShellCommandline('ls -l');
Security
- The
ContextListener::setLogoutOnUserChange()
method has been removed. - The
Symfony\Component\Security\Core\User\AdvancedUserInterface
has been removed. - The
ExpressionVoter::addExpressionLanguageProvider()
method has been removed. - The
FirewallMapInterface::getListeners()
method must return an array of 3 elements, the 3rd one must be either aLogoutListener
instance ornull
. - The
AuthenticationTrustResolver
constructor arguments have been removed. - A user object that is not an instance of
UserInterface
cannot be accessed fromSecurity::getUser()
anymore and returnsnull
instead. SimpleAuthenticatorInterface
,SimpleFormAuthenticatorInterface
,SimplePreAuthenticatorInterface
,SimpleAuthenticationProvider
,SimpleAuthenticationHandler
,SimpleFormAuthenticationListener
andSimplePreAuthenticationListener
have been removed. Use Guard instead.
SecurityBundle
- The
logout_on_user_change
firewall option has been removed. - The
switch_user.stateless
firewall option has been removed. - The
SecurityUserValueResolver
class has been removed. - Passing a
FirewallConfig
instance as 3rd argument to theFirewallContext
constructor now throws a\TypeError
, pass aLogoutListener
instance instead. - The
security.authentication.trust_resolver.anonymous_class
parameter has been removed. - The
security.authentication.trust_resolver.rememberme_class
parameter has been removed. - The
simple_form
andsimple_preauth
authentication listeners have been removed, use Guard instead. - The
SimpleFormFactory
andSimplePreAuthenticationFactory
classes have been removed, use Guard instead.
Serializer
- The
AbstractNormalizer::handleCircularReference()
method has two new$format
and$context
arguments.
Translation
- The
FileDumper::setBackup()
method has been removed. - The
TranslationWriter::disableBackup()
method has been removed. - The
TranslatorInterface
has been removed in favor ofSymfony\Contracts\Translation\TranslatorInterface
- The
MessageSelector
,Interval
andPluralizationRules
classes have been removed, useIdentityTranslator
instead - The
Translator::getFallbackLocales()
andTranslationDataCollector::getFallbackLocales()
method are now internal - The
Translator::transChoice()
method has been removed in favor of usingTranslator::trans()
with "%count%" as the parameter driving plurals
TwigBundle
- The default value (
false
) of thetwig.strict_variables
configuration option has been changed to%kernel.debug%
. - The
transchoice
tag and filter have been removed, use thetrans
ones instead with a%count%
parameter. - Removed support for legacy templates directories
src/Resources/views/
andsrc/Resources/<BundleName>/views/
, usetemplates/
andtemplates/bundles/<BundleName>/
instead.
Validator
- The
checkMX
andcheckHost
options of theEmail
constraint were removed - The
Email::__construct()
'strict' property has been removed. Use 'mode'=>"strict" instead. - Calling
EmailValidator::__construct()
method with a boolean parameter has been removed, useEmailValidator("strict")
instead. - Removed the
checkDNS
anddnsMessage
options from theUrl
constraint. - The component is now decoupled from
symfony/translation
and usesSymfony\Contracts\Translation\TranslatorInterface
instead - The
ValidatorBuilderInterface
has been removed andValidatorBuilder
is now final - Removed support for validating instances of
\DateTimeInterface
inDateTimeValidator
,DateValidator
andTimeValidator
. UseType
instead or remove the constraint if the underlying model is type hinted to\DateTimeInterface
already. - The
symfony/intl
component is now required for using theBic
,Country
,Currency
,Language
andLocale
constraints - The
egulias/email-validator
component is now required for using theEmail
constraint in strict mode - The
symfony/expression-language
component is now required for using theExpression
constraint
Workflow
- The
DefinitionBuilder::reset()
method has been removed, use theclear()
one instead. add
method has been removed useaddWorkflow
method inWorkflow\Registry
instead.SupportStrategyInterface
has been removed, useWorkflowSupportStrategyInterface
instead.ClassInstanceSupportStrategy
has been removed, useInstanceOfSupportStrategy
instead.