6.4 KiB
UPGRADE FROM 3.3 to 3.4
DependencyInjection
-
Relying on service auto-registration while autowiring is deprecated and won't be supported in Symfony 4.0. Explicitly inject your dependencies or create services whose ids are their fully-qualified class name.
Before:
namespace App\Controller; use App\Mailer; class DefaultController { public function __construct(Mailer $mailer) { // ... } // ... }
services: App\Controller\DefaultController: autowire: true
After:
// same PHP code
services: App\Controller\DefaultController: autowire: true # or # App\Controller\DefaultController: # arguments: { $mailer: "@App\Mailer" } App\Mailer: autowire: true
-
Top-level anonymous services in XML are deprecated and will throw an exception in Symfony 4.0.
Debug
- Support for stacked errors in the
ErrorHandler
is deprecated and will be removed in Symfony 4.0.
Filesystem
- The
Symfony\Component\Filesystem\LockHandler
class has been deprecated, use theSymfony\Component\Lock\Store\FlockStore
class or theSymfony\Component\Lock\Store\FlockStore\SemaphoreStore
class directly instead.
Finder
- The
Symfony\Component\Finder\Iterator\FilterIterator
class has been deprecated and will be removed in 4.0 as it used to fix a bug which existed before version 5.5.23/5.6.7.
FrameworkBundle
-
The
doctrine/cache
dependency has been removed; require it viacomposer require doctrine/cache
if you are using Doctrine cache in your project. -
The
validator.mapping.cache.doctrine.apc
service has been deprecated. -
The
symfony/stopwatch
dependency has been removed, require it viacomposer require symfony/stopwatch
in yourdev
environment. -
Using the
KERNEL_DIR
environment variable or the automatic guessing based on thephpunit.xml
/phpunit.xml.dist
file location is deprecated since 3.4. Set theKERNEL_CLASS
environment variable to the fully-qualified class name of your Kernel instead. Not setting theKERNEL_CLASS
environment variable will throw an exception on 4.0 unless you override theKernelTestCase::createKernel()
orKernelTestCase::getKernelClass()
method. -
The
KernelTestCase::getPhpUnitXmlDir()
andKernelTestCase::getPhpUnitCliConfigArgument()
methods are deprecated since 3.4 and will be removed in 4.0. -
The
--no-prefix
option of thetranslation:update
command is deprecated and will be removed in 4.0. Use the--prefix
option with an empty string as value instead (e.g.--prefix=""
) -
The
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheClearerPass
class has been deprecated and will be removed in 4.0. Use theSymfony\Component\HttpKernel\DependencyInjection\AddCacheClearerPass
class instead. -
The
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheWarmerPass
class has been deprecated and will be removed in 4.0. Use theSymfony\Component\HttpKernel\DependencyInjection\AddCacheWarmerPass
class instead. -
The
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationDumperPass
class has been deprecated and will be removed in 4.0. Use theSymfony\Component\Translation\DependencyInjection\TranslationDumperPass
class instead. -
The
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationExtractorPass
class has been deprecated and will be removed in 4.0. Use theSymfony\Component\Translation\DependencyInjection\TranslationExtractorPass
class instead. -
The
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslatorPass
class has been deprecated and will be removed in 4.0. Use theSymfony\Component\Translation\DependencyInjection\TranslatorPass
class instead.
Process
- The
Symfony\Component\Process\ProcessBuilder
class has been deprecated, use theSymfony\Component\Process\Process
class directly instead.
SecurityBundle
-
Using voters that do not implement the
VoterInterface
is now deprecated in theAccessDecisionManager
and this functionality will be removed in 4.0. -
FirewallContext::getListeners()
now returns\Traversable|array
Translation
Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations
has been deprecated and will be removed in 4.0, useSymfony\Component\Translation\Writer\TranslationWriter::write
instead.
TwigBridge
-
deprecated the
Symfony\Bridge\Twig\Form\TwigRenderer
class, use theFormRenderer
class from the Form component instead -
deprecated
Symfony\Bridge\Twig\Command\DebugCommand::set/getTwigEnvironment
and the ability to pass a command name as first argument -
deprecated
Symfony\Bridge\Twig\Command\LintCommand::set/getTwigEnvironment
and the ability to pass a command name as first argument
TwigBundle
-
deprecated the
Symfony\Bundle\TwigBundle\Command\DebugCommand
class, use theDebugCommand
class from the Twig bridge instead -
deprecated relying on the
ContainerAwareInterface
implementation forSymfony\Bundle\TwigBundle\Command\LintCommand
Validator
- Not setting the
strict
option of theChoice
constraint totrue
is deprecated and will throw an exception in Symfony 4.0.
Yaml
-
using the
!php/object:
tag is deprecated and won't be supported in 4.0. Use the!php/object
tag (without the colon) instead. -
using the
!php/const:
tag is deprecated and won't be supported in 4.0. Use the!php/const
tag (without the colon) instead.Before:
!php/const:PHP_INT_MAX
After:
!php/const PHP_INT_MAX
-
Support for the
!str
tag is deprecated, use the!!str
tag instead. -
Using the non-specific tag
!
is deprecated and will have a different behavior in 4.0. Use a plain integer or!!float
instead. -
Using the
Yaml::PARSE_KEYS_AS_STRINGS
flag is deprecated as it will be removed in 4.0.Before:
$yaml = <<<YAML null: null key true: boolean true 2.0: float key YAML; Yaml::parse($yaml, Yaml::PARSE_KEYS_AS_STRINGS);
After:
$yaml = <<<YAML "null": null key "true": boolean true "2.0": float key YAML; Yaml::parse($yaml);