Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
276 lines (206 loc) · 7.75 KB

File metadata and controls

276 lines (206 loc) · 7.75 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

UPGRADE FROM 3.1 to 3.2

BrowserKit

  • Client HTTP user agent has been changed to 'Symfony BrowserKit' (was 'Symfony2 BrowserKit' before).

Console

  • Setting unknown style options is deprecated and will throw an exception in Symfony 4.0.

  • The QuestionHelper::setInputStream() method is deprecated and will be removed in Symfony 4.0. Use StreamableInputInterface::setStream() or CommandTester::setInputs() instead.

    Before:

    $input = new ArrayInput();
    
    $questionHelper->setInputStream($stream);
    $questionHelper->ask($input, $output, $question);

    After:

    $input = new ArrayInput();
    $input->setStream($stream);
    
    $questionHelper->ask($input, $output, $question);

    Before:

    $commandTester = new CommandTester($command);
    
    $stream = fopen('php://memory', 'r+', false);
    fputs($stream, "AppBundle\nYes");
    rewind($stream);
    
    $command->getHelper('question')->setInputStream($stream);
    
    $commandTester->execute();

    After:

    $commandTester = new CommandTester($command);
    
    $commandTester->setInputs(array('AppBundle', 'Yes'));
    
    $commandTester->execute();

DependencyInjection

  • Calling get() on a ContainerBuilder instance before compiling the container is deprecated and will throw an exception in Symfony 4.0.

  • Setting or unsetting a private service with the Container::set() method is deprecated. Only public services can be set or unset in Symfony 4.0.

  • Checking the existence of a private service with the Container::has() method is deprecated and will return false in Symfony 4.0.

  • Requesting a private service with the Container::get() method is deprecated and will no longer be supported in Symfony 4.0.

ExpressionLanguage

  • Passing a ParserCacheInterface instance to the ExpressionLanguage has been deprecated and will not be supported in Symfony 4.0. You should use the CacheItemPoolInterface interface instead.

Form

  • Calling isValid() on a Form instance before submitting it is deprecated and will throw an exception in Symfony 4.0.

    Before:

    if ($form->isValid()) {
        // ...
    }

    After:

    if ($form->isSubmitted() && $form->isValid()) {
        // ...
    }

FrameworkBundle

  • The doctrine/annotations dependency has been removed; require it via composer require doctrine/annotations if you are using annotations in your project
  • The symfony/security-core and symfony/security-csrf dependencies have been removed; require them via composer require symfony/security-core symfony/security-csrf if you depend on them and don't already depend on symfony/symfony
  • The symfony/templating dependency has been removed; require it via composer require symfony/templating if you depend on it and don't already depend on symfony/symfony
  • The symfony/translation dependency has been removed; require it via composer require symfony/translation if you depend on it and don't already depend on symfony/symfony
  • The symfony/asset dependency has been removed; require it via composer require symfony/asset if you depend on it and don't already depend on symfony/symfony
  • The Resources/public/images/* files have been removed.
  • The Resources/public/css/*.css files have been removed (they are now inlined in TwigBundle).
  • The service serializer.mapping.cache.doctrine.apc is deprecated. APCu should now be automatically used when available.

HttpFoundation

  • Extending the following methods of Response is deprecated (these methods will be final in 4.0):

    • setDate/getDate
    • setExpires/getExpires
    • setLastModified/getLastModified
    • setProtocolVersion/getProtocolVersion
    • setStatusCode/getStatusCode
    • setCharset/getCharset
    • setPrivate/setPublic
    • getAge
    • getMaxAge/setMaxAge
    • setSharedMaxAge
    • getTtl/setTtl
    • setClientTtl
    • getEtag/setEtag
    • hasVary/getVary/setVary
    • isInvalid/isSuccessful/isRedirection/isClientError/isServerError
    • isOk/isForbidden/isNotFound/isRedirect/isEmpty
  • Checking only for cacheable HTTP methods with Request::isMethodSafe() is deprecated since version 3.2 and will throw an exception in 4.0. Disable checking only for cacheable methods by calling the method with false as first argument or use Request::isMethodCacheable() instead.

HttpKernel

  • DataCollector::varToString() is deprecated and will be removed in Symfony 4.0. Use the cloneVar() method instead.

  • Surrogate name in a Surrogate-Capability HTTP request header has been changed to 'symfony'.

    Before:

    Surrogate-Capability: symfony2="ESI/1.0"

    After:

    Surrogate-Capability: symfony="ESI/1.0"

Router

  • UrlGenerator now generates URLs in compliance with RFC 3986, which means spaces will be percent encoded (%20) inside query strings.

Serializer

  • Method AbstractNormalizer::instantiateObject() will have a 6th $format = null argument in Symfony 4.0. Not defining it when overriding the method is deprecated.

TwigBridge

  • Injecting the Form TwigRenderer into the FormExtension is deprecated and has no more effect. Upgrade Twig to ^1.30, inject the Twig_Environment into the TwigRendererEngine and load the TwigRenderer using the Twig_FactoryRuntimeLoader instead.

    Before:

    use Symfony\Bridge\Twig\Extension\FormExtension;
    use Symfony\Bridge\Twig\Form\TwigRenderer;
    use Symfony\Bridge\Twig\Form\TwigRendererEngine;
    
    // ...
    $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'));
    $rendererEngine->setEnvironment($twig);
    $twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager)));

    After:

    $rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'), $twig);
    $twig->addRuntimeLoader(new \Twig_FactoryRuntimeLoader(array(
        TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) {
            return new TwigRenderer($rendererEngine, $csrfTokenManager);
        },
    )));
    $twig->addExtension(new FormExtension());
  • Deprecated the TwigRendererEngineInterface interface, it will be removed in 4.0.

Validator

  • Tests\Constraints\AbstractConstraintValidatorTest has been deprecated in favor of Test\ConstraintValidatorTestCase.

    Before:

    // ...
    use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest;
    
    class MyCustomValidatorTest extends AbstractConstraintValidatorTest
    {
        // ...
    }

    After:

    // ...
    use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
    
    class MyCustomValidatorTest extends ConstraintValidatorTestCase
    {
        // ...
    }
  • Setting the strict option of the Choice Constraint to false has been deprecated and the option will be changed to true as of 4.0.

    // ...
    use Symfony\Component\Validator\Constraints as Assert;
    
    class MyEntity
    {
        /**
         * @Assert\Choice(choices={"MR", "MRS"}, strict=true)
         */
        private $salutation;
    }

Yaml

  • Support for silently ignoring duplicate mapping keys in YAML has been deprecated and will lead to a ParseException in Symfony 4.0.

  • Mappings with a colon (:) that is not followed by a whitespace are deprecated and will lead to a ParseException in Symfony 4.0 (e.g. foo:bar must be foo: bar).

Morty Proxy This is a proxified and sanitized view of the page, visit original site.