Skip to content

Latest commit

 

History

History
419 lines (358 loc) · 22.5 KB

CHANGELOG.md

File metadata and controls

419 lines (358 loc) · 22.5 KB

CHANGELOG

7.2

  • Remove @internal flag and add @final to ServicesResetter
  • Add support for SYMFONY_DISABLE_RESOURCE_TRACKING env var
  • Add support for configuring trusted proxies/headers/hosts via env vars

7.1

  • Add method isKernelTerminating() to ExceptionEvent that allows to check if an exception was thrown while the kernel is being terminated
  • Add HttpException::fromStatusCode()
  • Add $validationFailedStatusCode argument to #[MapQueryParameter] that allows setting a custom HTTP status code when validation fails
  • Add NearMissValueResolverException to let value resolvers report when an argument could be under their watch but failed to be resolved
  • Add $type argument to #[MapRequestPayload] that allows mapping a list of items
  • The Extension class is marked as internal, extend the Extension class from the DependencyInjection component instead
  • Deprecate Extension::addAnnotatedClassesToCompile()
  • Deprecate AddAnnotatedClassesToCachePass
  • Deprecate the setAnnotatedClassCache() and getAnnotatedClassesToCompile() methods of the Kernel class
  • Add #[MapUploadedFile] attribute to fetch, validate, and inject uploaded files into controller arguments

7.0

  • Add argument $reflector to ArgumentResolverInterface::getArguments() and ArgumentMetadataFactoryInterface::createArgumentMetadata()
  • Remove ArgumentValueResolverInterface, use ValueResolverInterface instead
  • Remove StreamedResponseListener
  • Remove AbstractSurrogate::$phpEscapeMap
  • Remove HttpKernelInterface::MASTER_REQUEST
  • Remove terminate_on_cache_hit option from HttpCache
  • Require explicit argument when calling ConfigDataCollector::setKernel(), RouterListener::setCurrentRequest()
  • Remove Kernel::stripComments()
  • Remove FileLinkFormatter, use FileLinkFormatter from the ErrorHandler component instead
  • Remove UriSigner, use UriSigner from the HttpFoundation component instead
  • Add argument $buildDir to WarmableInterface
  • Add argument $filter to Profiler::find() and FileProfilerStorage::find()

6.4

  • Support backed enums in #[MapQueryParameter]
  • BundleInterface no longer extends ContainerAwareInterface
  • Add optional $className parameter to ControllerEvent::getAttributes()
  • Add native return types to TraceableEventDispatcher and to MergeExtensionConfigurationPass
  • Add argument $validationFailedStatusCode to #[MapQueryString] and #[MapRequestPayload]
  • Add argument $debug to Logger
  • Add class DebugLoggerConfigurator
  • Add parameters kernel.runtime_mode and kernel.runtime_mode.*, all set from env var APP_RUNTIME_MODE
  • Deprecate Kernel::stripComments()
  • Support the ! character at the beginning of a string as a negation operator in the url filter of the profiler
  • Deprecate UriSigner, use UriSigner from the HttpFoundation component instead
  • Deprecate FileLinkFormatter, use FileLinkFormatter from the ErrorHandler component instead
  • Add argument $buildDir to WarmableInterface
  • Add argument $filter to Profiler::find() and FileProfilerStorage::find()
  • Add ControllerResolver::allowControllers() to define which callables are legit controllers when the _check_controller_is_allowed request attribute is set

6.3

  • Deprecate parameters container.dumper.inline_factories and container.dumper.inline_class_loader, use .container.dumper.inline_factories and .container.dumper.inline_class_loader instead
  • FileProfilerStorage removes profiles automatically after two days
  • Add #[WithHttpStatus] for defining status codes for exceptions
  • Use an instance of Psr\Clock\ClockInterface to generate the current date time in DateTimeValueResolver
  • Add #[WithLogLevel] for defining log levels for exceptions
  • Add skip_response_headers to the HttpCache options
  • Introduce targeted value resolvers with #[ValueResolver] and #[AsTargetedValueResolver]
  • Add #[MapRequestPayload] to map and validate request payload from Request::getContent() or Request::$request->all() to typed objects
  • Add #[MapQueryString] to map and validate request query string from Request::$query->all() to typed objects
  • Add #[MapQueryParameter] to map and validate individual query parameters to controller arguments
  • Collect data from every event dispatcher

6.2

  • Add constructor argument bool $handleAllThrowable to HttpKernel
  • Add ControllerEvent::getAttributes() to handle attributes on controllers
  • Add #[Cache] to describe the default HTTP cache headers on controllers
  • Add absolute_uri option to surrogate fragment renderers
  • Add ValueResolverInterface and deprecate ArgumentValueResolverInterface
  • Add argument $reflector to ArgumentResolverInterface and ArgumentMetadataFactoryInterface
  • Deprecate calling ConfigDataCollector::setKernel(), RouterListener::setCurrentRequest() without arguments

6.1

  • Add BackedEnumValueResolver to resolve backed enum cases from request attributes in controller arguments
  • Add DateTimeValueResolver to resolve request attributes into DateTime objects in controller arguments
  • Deprecate StreamedResponseListener, it's not needed anymore
  • Add Profiler::isEnabled() so collaborating collector services may elect to omit themselves
  • Add the UidValueResolver argument value resolver
  • Add AbstractBundle class for DI configuration/definition on a single file
  • Update the path of a bundle placed in the src/ directory to the parent directory when AbstractBundle is used

6.0

  • Remove ArgumentInterface
  • Remove ArgumentMetadata::getAttribute(), use getAttributes() instead
  • Remove support for returning a ContainerBuilder from KernelInterface::registerContainerConfiguration()
  • Remove KernelEvent::isMasterRequest(), use isMainRequest() instead
  • Remove support for service:action syntax to reference controllers, use serviceOrFqcn::method instead

5.4

  • Add the ability to enable the profiler using a request query parameter, body parameter or attribute
  • Deprecate AbstractTestSessionListener and TestSessionListener, use AbstractSessionListener and SessionListener instead
  • Deprecate the fileLinkFormat parameter of DebugHandlersListener
  • Add support for configuring log level, and status code by exception class
  • Allow ignoring "kernel.reset" methods that don't exist with "on_invalid" attribute

5.3

  • Deprecate ArgumentInterface
  • Add ArgumentMetadata::getAttributes()
  • Deprecate ArgumentMetadata::getAttribute(), use getAttributes() instead
  • Mark the class Symfony\Component\HttpKernel\EventListener\DebugHandlersListener as internal
  • Deprecate returning a ContainerBuilder from KernelInterface::registerContainerConfiguration()
  • Deprecate HttpKernelInterface::MASTER_REQUEST and add HttpKernelInterface::MAIN_REQUEST as replacement
  • Deprecate KernelEvent::isMasterRequest() and add isMainRequest() as replacement
  • Add #[AsController] attribute for declaring standalone controllers on PHP 8
  • Add FragmentUriGeneratorInterface and FragmentUriGenerator to generate the URI of a fragment

5.2.0

  • added session usage
  • made the public http_cache service handle requests when available
  • allowed enabling trusted hosts and proxies using new kernel.trusted_hosts, kernel.trusted_proxies and kernel.trusted_headers parameters
  • content of request parameter _password is now also hidden in the request profiler raw content section
  • Allowed adding attributes on controller arguments that will be passed to argument resolvers.
  • kernels implementing the ExtensionInterface will now be auto-registered to the container
  • added parameter kernel.runtime_environment, defined as %env(default:kernel.environment:APP_RUNTIME_ENV)%
  • do not set a default Accept HTTP header when using HttpKernelBrowser

5.1.0

  • allowed to use a specific logger channel for deprecations
  • made WarmableInterface::warmUp() return a list of classes or files to preload on PHP 7.4+; not returning an array is deprecated
  • made kernels implementing WarmableInterface be part of the cache warmup stage
  • deprecated support for service:action syntax to reference controllers, use serviceOrFqcn::method instead
  • allowed using public aliases to reference controllers
  • added session usage reporting when the _stateless attribute of the request is set to true
  • added AbstractSessionListener::onSessionUsage() to report when the session is used while a request is stateless

5.0.0

  • removed support for getting the container from a non-booted kernel
  • removed the first and second constructor argument of ConfigDataCollector
  • removed ConfigDataCollector::getApplicationName()
  • removed ConfigDataCollector::getApplicationVersion()
  • removed support for Symfony\Component\Templating\EngineInterface in HIncludeFragmentRenderer, use a Twig\Environment only
  • removed TranslatorListener in favor of LocaleAwareListener
  • removed getRootDir() and getName() from Kernel and KernelInterface
  • removed FilterControllerArgumentsEvent, use ControllerArgumentsEvent instead
  • removed FilterControllerEvent, use ControllerEvent instead
  • removed FilterResponseEvent, use ResponseEvent instead
  • removed GetResponseEvent, use RequestEvent instead
  • removed GetResponseForControllerResultEvent, use ViewEvent instead
  • removed GetResponseForExceptionEvent, use ExceptionEvent instead
  • removed PostResponseEvent, use TerminateEvent instead
  • removed SaveSessionListener in favor of AbstractSessionListener
  • removed Client, use HttpKernelBrowser instead
  • added method getProjectDir() to KernelInterface
  • removed methods serialize and unserialize from DataCollector, store the serialized state in the data property instead
  • made ProfilerStorageInterface internal
  • removed the second and third argument of KernelInterface::locateResource
  • removed the second and third argument of FileLocator::__construct
  • removed loading resources from %kernel.root_dir%/Resources and %kernel.root_dir% as fallback directories.
  • removed class ExceptionListener, use ErrorListener instead

4.4.0

  • The DebugHandlersListener class has been marked as final
  • Added new Bundle directory convention consistent with standard skeletons
  • Deprecated the second and third argument of KernelInterface::locateResource
  • Deprecated the second and third argument of FileLocator::__construct
  • Deprecated loading resources from %kernel.root_dir%/Resources and %kernel.root_dir% as fallback directories. Resources like service definitions are usually loaded relative to the current directory or with a glob pattern. The fallback directories have never been advocated so you likely do not use those in any app based on the SF Standard or Flex edition.
  • Marked all dispatched event classes as @final
  • Added ErrorController to enable the preview and error rendering mechanism
  • Getting the container from a non-booted kernel is deprecated.
  • Marked the AjaxDataCollector, ConfigDataCollector, EventDataCollector, ExceptionDataCollector, LoggerDataCollector, MemoryDataCollector, RequestDataCollector and TimeDataCollector classes as @final.
  • Marked the RouterDataCollector::collect() method as @final.
  • The DataCollectorInterface::collect() and Profiler::collect() methods third parameter signature will be \Throwable $exception = null instead of \Exception $exception = null in Symfony 5.0.
  • Deprecated methods ExceptionEvent::get/setException(), use get/setThrowable() instead
  • Deprecated class ExceptionListener, use ErrorListener instead

4.3.0

  • renamed Client to HttpKernelBrowser
  • KernelInterface doesn't extend Serializable anymore
  • deprecated the Kernel::serialize() and unserialize() methods
  • increased the priority of Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener
  • made Symfony\Component\HttpKernel\EventListener\LocaleListener set the default locale early
  • deprecated TranslatorListener in favor of LocaleAwareListener
  • added the registration of all LocaleAwareInterface implementations into the LocaleAwareListener
  • made FileLinkFormatter final and not implement Serializable anymore
  • the base DataCollector doesn't implement Serializable anymore, you should store all the serialized state in the data property instead
  • DumpDataCollector has been marked as final
  • added an event listener to prevent search engines from indexing applications in debug mode.
  • 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
  • added HttpClientKernel for handling requests with an HttpClientInterface instance
  • added trace_header and trace_level configuration options to HttpCache

4.2.0

  • deprecated KernelInterface::getRootDir() and the kernel.root_dir parameter
  • deprecated KernelInterface::getName() and the kernel.name parameter
  • deprecated the first and second constructor argument of ConfigDataCollector
  • deprecated ConfigDataCollector::getApplicationName()
  • deprecated ConfigDataCollector::getApplicationVersion()

4.1.0

  • added orphaned events support to EventDataCollector
  • ExceptionListener now logs exceptions at priority 0 (previously logged at -128)
  • Added support for using service::method to reference controllers, making it consistent with other cases. It is recommended over the service:action syntax with a single colon, which will be deprecated in the future.
  • Added the ability to profile individual argument value resolvers via the Symfony\Component\HttpKernel\Controller\ArgumentResolver\TraceableValueResolver

4.0.0

  • removed the DataCollector::varToString() method, use DataCollector::cloneVar() instead
  • using the DataCollector::cloneVar() method requires the VarDumper component
  • removed the ValueExporter class
  • removed ControllerResolverInterface::getArguments()
  • removed TraceableControllerResolver::getArguments()
  • removed ControllerResolver::getArguments() and the ability to resolve arguments
  • removed the argument_resolver service dependency from the debug.controller_resolver
  • removed LazyLoadingFragmentHandler::addRendererService()
  • removed Psr6CacheClearer::addPool()
  • removed Extension::addClassesToCompile() and Extension::getClassesToCompile()
  • removed Kernel::loadClassCache(), Kernel::doLoadClassCache(), Kernel::setClassCache(), and Kernel::getEnvParameters()
  • support for the X-Status-Code when handling exceptions in the HttpKernel has been dropped, use the HttpKernel::allowCustomResponseCode() method instead
  • removed convention-based commands registration
  • removed the ChainCacheClearer::add() method
  • removed the CacheaWarmerAggregate::add() and setWarmers() methods
  • made CacheWarmerAggregate and ChainCacheClearer classes final

3.4.0

  • added a minimalist PSR-3 Logger class that writes in stderr
  • made kernels implementing CompilerPassInterface able to process the container
  • deprecated bundle inheritance
  • added RebootableInterface and implemented it in Kernel
  • deprecated commands auto registration
  • deprecated EnvParametersResource
  • added Symfony\Component\HttpKernel\Client::catchExceptions()
  • deprecated the ChainCacheClearer::add() method
  • deprecated the CacheaWarmerAggregate::add() and setWarmers() methods
  • made CacheWarmerAggregate and ChainCacheClearer classes final
  • added the possibility to reset the profiler to its initial state
  • deprecated data collectors without a reset() method
  • deprecated implementing DebugLoggerInterface without a clear() method

3.3.0

  • added kernel.project_dir and Kernel::getProjectDir()
  • deprecated kernel.root_dir and Kernel::getRootDir()
  • deprecated Kernel::getEnvParameters()
  • deprecated the special SYMFONY__ environment variables
  • added the possibility to change the query string parameter used by UriSigner
  • deprecated LazyLoadingFragmentHandler::addRendererService()
  • deprecated Extension::addClassesToCompile() and Extension::getClassesToCompile()
  • deprecated Psr6CacheClearer::addPool()

3.2.0

  • deprecated DataCollector::varToString(), use cloneVar() instead
  • changed surrogate capability name in AbstractSurrogate::addSurrogateCapability to 'symfony'
  • Added ControllerArgumentValueResolverPass

3.1.0

  • deprecated passing objects as URI attributes to the ESI and SSI renderers
  • deprecated ControllerResolver::getArguments()
  • added Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface
  • added Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface as argument to HttpKernel
  • added Symfony\Component\HttpKernel\Controller\ArgumentResolver
  • added Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::getMethod()
  • added Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::getRedirect()
  • added the kernel.controller_arguments event, triggered after controller arguments have been resolved

3.0.0

  • removed Symfony\Component\HttpKernel\Kernel::init()
  • removed Symfony\Component\HttpKernel\Kernel::isClassInActiveBundle() and Symfony\Component\HttpKernel\KernelInterface::isClassInActiveBundle()
  • removed Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher::setProfiler()
  • removed Symfony\Component\HttpKernel\EventListener\FragmentListener::getLocalIpAddresses()
  • removed Symfony\Component\HttpKernel\EventListener\LocaleListener::setRequest()
  • removed Symfony\Component\HttpKernel\EventListener\RouterListener::setRequest()
  • removed Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest()
  • removed Symfony\Component\HttpKernel\Fragment\FragmentHandler::setRequest()
  • removed Symfony\Component\HttpKernel\HttpCache\Esi::hasSurrogateEsiCapability()
  • removed Symfony\Component\HttpKernel\HttpCache\Esi::addSurrogateEsiCapability()
  • removed Symfony\Component\HttpKernel\HttpCache\Esi::needsEsiParsing()
  • removed Symfony\Component\HttpKernel\HttpCache\HttpCache::getEsi()
  • removed Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
  • removed Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass
  • removed Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener
  • removed Symfony\Component\HttpKernel\EventListener\EsiListener
  • removed Symfony\Component\HttpKernel\HttpCache\EsiResponseCacheStrategy
  • removed Symfony\Component\HttpKernel\HttpCache\EsiResponseCacheStrategyInterface
  • removed Symfony\Component\HttpKernel\Log\LoggerInterface
  • removed Symfony\Component\HttpKernel\Log\NullLogger
  • removed Symfony\Component\HttpKernel\Profiler::import()
  • removed Symfony\Component\HttpKernel\Profiler::export()

2.8.0

  • deprecated Profiler::import and Profiler::export

2.7.0

  • added the HTTP status code to profiles

2.6.0

  • deprecated Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener, use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instead
  • deprecated unused method Symfony\Component\HttpKernel\Kernel::isClassInActiveBundle and Symfony\Component\HttpKernel\KernelInterface::isClassInActiveBundle

2.5.0

  • deprecated Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass, use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass instead

2.4.0

  • added event listeners for the session
  • added the KernelEvents::FINISH_REQUEST event

2.3.0

  • [BC BREAK] renamed Symfony\Component\HttpKernel\EventListener\DeprecationLoggerListener to Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener and changed its constructor
  • deprecated Symfony\Component\HttpKernel\Debug\ErrorHandler, Symfony\Component\HttpKernel\Debug\ExceptionHandler, Symfony\Component\HttpKernel\Exception\FatalErrorException and Symfony\Component\HttpKernel\Exception\FlattenException
  • deprecated Symfony\Component\HttpKernel\Kernel::init()
  • added the possibility to specify an id an extra attributes to hinclude tags
  • added the collect of data if a controller is a Closure in the Request collector
  • pass exceptions from the ExceptionListener to the logger using the logging context to allow for more detailed messages

2.2.0

  • [BC BREAK] the path info for sub-request is now always _fragment (or whatever you configured instead of the default)
  • added Symfony\Component\HttpKernel\EventListener\FragmentListener
  • added Symfony\Component\HttpKernel\UriSigner
  • added Symfony\Component\HttpKernel\FragmentRenderer and rendering strategies (in Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface)
  • added Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
  • added ControllerReference to create reference of Controllers (used in the FragmentRenderer class)
  • [BC BREAK] renamed TimeDataCollector::getTotalTime() to TimeDataCollector::getDuration()
  • updated the MemoryDataCollector to include the memory used in the kernel.terminate event listeners
  • moved the Stopwatch classes to a new component
  • added TraceableControllerResolver
  • added TraceableEventDispatcher (removed ContainerAwareTraceableEventDispatcher)
  • added support for WinCache opcode cache in ConfigDataCollector

2.1.0

  • [BC BREAK] the charset is now configured via the Kernel::getCharset() method
  • [BC BREAK] the current locale for the user is not stored anymore in the session
  • added the HTTP method to the profiler storage
  • updated all listeners to implement EventSubscriberInterface
  • added TimeDataCollector
  • added ContainerAwareTraceableEventDispatcher
  • moved TraceableEventDispatcherInterface to the EventDispatcher component
  • added RouterListener, LocaleListener, and StreamedResponseListener
  • added CacheClearerInterface (and ChainCacheClearer)
  • added a kernel.terminate event (via TerminableInterface and PostResponseEvent)
  • added a Stopwatch class
  • added WarmableInterface
  • improved extensibility between bundles
  • added profiler storages for Memcache(d), File-based, MongoDB, Redis
  • moved Filesystem class to its own component