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
358 lines (288 loc) · 10.9 KB

File metadata and controls

358 lines (288 loc) · 10.9 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

UPGRADE FROM 4.2 to 4.3

BrowserKit

  • Renamed Client to AbstractBrowser
  • Marked Response final.
  • Deprecated Response::buildHeader()
  • Deprecated Response::getStatus(), use Response::getStatusCode() instead

Cache

  • The psr/simple-cache dependency has been removed - run composer require psr/simple-cache if you need it.
  • Deprecated all PSR-16 adapters, use Psr16Cache or Symfony\Contracts\Cache\CacheInterface implementations instead.
  • Deprecated SimpleCacheAdapter, use Psr16Adapter instead.

Config

  • Deprecated using environment variables with cannotBeEmpty() if the value is validated with validate()
  • Deprecated the root() method in TreeBuilder, pass the root node information to the constructor instead

DependencyInjection

  • Deprecated support for non-string default env() parameters

    Before:

    parameters:
        env(NAME): 1.5

    After:

    parameters:
           env(NAME): '1.5'

Doctrine Bridge

  • Passing an IdReader to the DoctrineChoiceLoader when the query cannot be optimized with single id field has been deprecated, pass null instead
  • Not passing an IdReader to the DoctrineChoiceLoader when the query can be optimized with single id field has been deprecated

Dotenv

  • First parameter of Dotenv::__construct() will be changed from true to false in Symfony 5.0. A deprecation warning is triggered if no parameter is provided. Use $usePutenv = true to upgrade without breaking changes.

EventDispatcher

  • The signature of the EventDispatcherInterface::dispatch() method has been updated, consider using the new signature dispatch($event, string $eventName = null) instead of the old signature dispatch($eventName, $event) that is deprecated

    You have to swap arguments when calling dispatch():

    Before:

    $this->eventDispatcher->dispatch(Events::My_EVENT, $event);

    After:

    $this->eventDispatcher->dispatch($event, Events::My_EVENT);

    If your bundle or package needs to provide compatibility with the previous way of using the dispatcher, you can use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy::decorate() to ease upgrades:

    Before:

    public function __construct(EventDispatcherInterface $eventDispatcher) {
        $this->eventDispatcher = $eventDispatcher;
    }

    After:

    public function __construct(EventDispatcherInterface $eventDispatcher) {
        $this->eventDispatcher = LegacyEventDispatcherProxy::decorate($eventDispatcher);
    }
  • The Event class has been deprecated, use Symfony\Contracts\EventDispatcher\Event instead

Filesystem

  • Support for passing arrays to Filesystem::dumpFile() is deprecated.
  • Support for passing arrays to Filesystem::appendToFile() is deprecated.

Form

  • Using the format option of DateType and DateTimeType when the html5 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, and time_widget options of the DateTimeType when the widget option is set to single_text is deprecated.

FrameworkBundle

  • Deprecated the framework.templating option, configure the Twig bundle instead.
  • 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 the UrlGenerator class can return an empty string instead of null.

HttpFoundation

  • The MimeTypeGuesserInterface and ExtensionGuesserInterface interfaces have been deprecated, use Symfony\Component\Mime\MimeTypesInterface instead.
  • The MimeType and MimeTypeExtensionGuesser classes have been deprecated, use Symfony\Component\Mime\MimeTypes instead.
  • The FileBinaryMimeTypeGuesser class has been deprecated, use Symfony\Component\Mime\FileBinaryMimeTypeGuesser instead.
  • The FileinfoMimeTypeGuesser class has been deprecated, use Symfony\Component\Mime\FileinfoMimeTypeGuesser instead.

HttpKernel

  • Renamed Client to HttpKernelBrowser
  • Renamed FilterControllerArgumentsEvent to ControllerArgumentsEvent
  • Renamed FilterControllerEvent to ControllerEvent
  • Renamed FilterResponseEvent to ResponseEvent
  • Renamed GetResponseEvent to RequestEvent
  • Renamed GetResponseForControllerResultEvent to ViewEvent
  • Renamed GetResponseForExceptionEvent to ExceptionEvent
  • Renamed PostResponseEvent to TerminateEvent
  • Deprecated TranslatorListener in favor of LocaleAwareListener

Intl

  • Deprecated ResourceBundle namespace
  • Deprecated Intl::getCurrencyBundle(), use Currencies instead
  • Deprecated Intl::getLanguageBundle(), use Languages or Scripts instead
  • Deprecated Intl::getLocaleBundle(), use Locales instead
  • Deprecated Intl::getRegionBundle(), use Countries instead

Messenger

  • Amqp transport does not throw \AMQPException anymore, catch TransportException instead.
  • Deprecated the LoggingMiddleware class, pass a logger to SendMessageMiddleware instead.

Routing

  • The generator_base_class, generator_cache_class, matcher_base_class, and matcher_cache_class router options have been deprecated.
  • Serializable implementing methods for Route and CompiledRoute are marked as @internal and @final. Instead of overwriting them, use __serialize and __unserialize as extension points which are forward compatible with the new serialization methods in PHP 7.4.

Security

  • The Role and SwitchUserRole classes are deprecated and will be removed in 5.0. Use strings for roles instead.

  • The getReachableRoles() method of the RoleHierarchyInterface is deprecated and will be removed in 5.0. Role hierarchies must implement the getReachableRoleNames() method instead and return roles as strings.

  • The getRoles() method of the TokenInterface is deprecated. Tokens must implement the getRoleNames() method instead and return roles as strings.

  • The ListenerInterface is deprecated, turn your listeners into callables instead.

  • The Firewall::handleRequest() method is deprecated, use Firewall::callListeners() instead.

  • The AbstractToken::serialize(), AbstractToken::unserialize(), AuthenticationException::serialize() and AuthenticationException::unserialize() methods are now final, use __serialize() and __unserialize() instead.

    Before:

    public function serialize()
    {
        return [$this->myLocalVar, parent::serialize()];
    }
    
    public function unserialize($serialized)
    {
        [$this->myLocalVar, $parentSerialized] = unserialize($serialized);
        parent::unserialize($parentSerialized);
    }

    After:

    public function __serialize(): array
    {
        return [$this->myLocalVar, parent::__serialize()];
    }
    
    public function __unserialize(array $data): void
    {
        [$this->myLocalVar, $parentData] = $data;
        parent::__unserialize($parentData);
    }
  • The Argon2iPasswordEncoder class has been deprecated, use SodiumPasswordEncoder instead.

  • The BCryptPasswordEncoder class has been deprecated, use NativePasswordEncoder instead.

  • Not implementing the methods __serialize and __unserialize in classes implementing the TokenInterface is deprecated

TwigBridge

  • deprecated the $requestStack and $requestContext arguments of the HttpFoundationExtension, pass a Symfony\Component\HttpFoundation\UrlHelper instance as the only argument instead

Workflow

  • initial_place is deprecated in favour of initial_marking.

    Before:

    framework:
       workflows:
           article:
               initial_place: draft

    After:

    framework:
       workflows:
           article:
               initial_marking: [draft]
  • WorkflowInterface::apply() will have a third argument in Symfony 5.0.

    Before:

    class MyWorkflow implements WorkflowInterface
    {
        public function apply($subject, $transitionName)
        {
        }
    }

    After:

    class MyWorkflow implements WorkflowInterface
    {
        public function apply($subject, $transitionName, array $context = [])
        {
        }
    }
  • 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 = [])
        {
        }
    }
  • MultipleStateMarkingStore is deprecated. Use MethodMarkingStore instead.

    Before:

    framework:
        workflows:
            article:
                type: workflow
                marking_store:
                    type: multiple_state
                    arguments: states

    After:

    framework:
        workflows:
            article:
                type: workflow
                marking_store:
                    type: method
                    property: states
  • SingleStateMarkingStore is deprecated. Use MethodMarkingStore instead.

    Before:

    framework:
        workflows:
            article:
                marking_store:
                    arguments: state

    After:

    framework:
        workflows:
            article:
                type: state_machine
                marking_store:
                    type: method
                    property: state
  • Using a workflow with a single state marking is deprecated. Use a state machine instead.

    Before:

    framework:
        workflows:
            article:
                type: workflow
                marking_store:
                    type: single_state

    After:

    framework:
        workflows:
            article:
                type: state_machine
                marking_store:
                    # type: single_state # Since the single_state marking store is deprecated, use method instead
                    type: method
  • Using DefinitionBuilder::setInitialPlace() is deprecated, use DefinitionBuilder::setInitialPlaces() instead.

Yaml

  • Using a mapping inside a multi-line string is deprecated and will throw a ParseException in 5.0.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.