CHANGELOG.md 13 KB

CHANGELOG

5.2.0

  • added param() and abstract_arg() in the PHP-DSL
  • deprecated Definition::setPrivate() and Alias::setPrivate(), use setPublic() instead
  • added support for the #[Required] attribute

5.1.0

  • deprecated inline() in favor of inline_service() and ref() in favor of service() when using the PHP-DSL
  • allow decorators to reference their decorated service using the special .inner id
  • added support to autowire public typed properties in php 7.4
  • added support for defining method calls, a configurator, and property setters in InlineServiceConfigurator
  • added possibility to define abstract service arguments
  • allowed mixing "parent" and instanceof-conditionals/defaults/bindings
  • updated the signature of method Definition::setDeprecated() to Definition::setDeprecation(string $package, string $version, string $message)
  • updated the signature of method Alias::setDeprecated() to Alias::setDeprecation(string $package, string $version, string $message)
  • updated the signature of method DeprecateTrait::deprecate() to DeprecateTrait::deprecation(string $package, string $version, string $message)
  • deprecated the Psr\Container\ContainerInterface and Symfony\Component\DependencyInjection\ContainerInterface aliases of the service_container service, configure them explicitly instead
  • added class Symfony\Component\DependencyInjection\Dumper\Preloader to help with preloading on PHP 7.4+
  • added tags container.preload/.no_preload to declare extra classes to preload/services to not preload
  • allowed loading and dumping tags with an attribute named "name"
  • deprecated Definition::getDeprecationMessage(), use Definition::getDeprecation() instead
  • deprecated Alias::getDeprecationMessage(), use Alias::getDeprecation() instead
  • added support of PHP8 static return type for withers
  • added AliasDeprecatedPublicServicesPass to deprecate public services to private

5.0.0

  • removed support for auto-discovered extension configuration class which does not implement ConfigurationInterface
  • removed support for non-string default env() parameters
  • moved ServiceSubscriberInterface to the Symfony\Contracts\Service namespace
  • removed RepeatedPass and RepeatablePassInterface
  • removed support for short factory/configurator syntax from YamlFileLoader
  • removed ResettableContainerInterface, use ResetInterface instead
  • added argument $returnsClone to Definition::addMethodCall()
  • removed tagged, use tagged_iterator instead

4.4.0

  • added CheckTypeDeclarationsPass to check injected parameters type during compilation
  • added support for opcache.preload by generating a preloading script in the cache folder
  • added support for dumping the container in one file instead of many files
  • deprecated support for short factories and short configurators in Yaml
  • added tagged_iterator alias for tagged which might be deprecated in a future version
  • deprecated passing an instance of Symfony\Component\DependencyInjection\Parameter as class name to Symfony\Component\DependencyInjection\Definition
  • added support for binding iterable and tagged services
  • made singly-implemented interfaces detection be scoped by file
  • added ability to define a static priority method for tagged service
  • added support for improved syntax to define method calls in Yaml
  • made the %env(base64:...)% processor able to decode base64url
  • added ability to choose behavior of decorations on non existent decorated services

4.3.0

  • added %env(trim:...)% processor to trim a string value
  • added %env(default:param_name:...)% processor to fallback to a parameter or to null when using %env(default::...)%
  • added %env(url:...)% processor to convert an URL or DNS into an array of components
  • added %env(query_string:...)% processor to convert a query string into an array of key values
  • added support for deprecating aliases
  • made ContainerParametersResource final and not implement Serializable anymore
  • added ReverseContainer: a container that turns services back to their ids
  • added ability to define an index for a tagged collection
  • added ability to define an index for services in an injected service locator argument
  • made ServiceLocator implement ServiceProviderInterface
  • deprecated support for non-string default env() parameters
  • added %env(require:...)% processor to require() a PHP file and use the value returned from it

4.2.0

  • added ContainerBuilder::registerAliasForArgument() to support autowiring by type+name
  • added support for binding by type+name
  • added ServiceSubscriberTrait to ease implementing ServiceSubscriberInterface using methods' return types
  • added ServiceLocatorArgument and !service_locator config tag for creating optimized service-locators
  • added support for autoconfiguring bindings
  • added %env(key:...)% processor to fetch a specific key from an array
  • deprecated ServiceSubscriberInterface, use the same interface from the Symfony\Contracts\Service namespace instead
  • deprecated ResettableContainerInterface, use Symfony\Contracts\Service\ResetInterface instead

4.1.0

  • added support for variadics in named arguments
  • added PSR-11 ContainerBagInterface and its ContainerBag implementation to access parameters as-a-service
  • added support for service's decorators autowiring
  • deprecated the TypedReference::canBeAutoregistered() and TypedReference::getRequiringClass() methods
  • environment variables are validated when used in extension configuration
  • deprecated support for auto-discovered extension configuration class which does not implement ConfigurationInterface

4.0.0

  • Relying on service auto-registration while autowiring is not supported anymore. 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

```yml services:

   App\Controller\DefaultController:
       autowire: true

   # or
   # App\Controller\DefaultController:
   #     arguments: { $mailer: "@App\Mailer" }

   App\Mailer:
       autowire: true
```
  • removed autowiring services based on the types they implement
  • added a third $methodName argument to the getProxyFactoryCode() method of the DumperInterface
  • removed support for autowiring types
  • removed Container::isFrozen
  • removed support for dumping an ucompiled container in PhpDumper
  • removed support for generating a dumped Container without populating the method map
  • removed support for case insensitive service identifiers
  • removed the DefinitionDecorator class, replaced by ChildDefinition
  • removed the AutowireServiceResource class and related AutowirePass::createResourceForClass() method
  • removed LoggingFormatter, Compiler::getLoggingFormatter() and addLogMessage() class and methods, use the ContainerBuilder::log() method instead
  • removed FactoryReturnTypePass
  • removed ContainerBuilder::addClassResource(), use the addObjectResource() or the getReflectionClass() method instead.
  • removed support for top-level anonymous services
  • removed silent behavior for unused attributes and elements
  • removed support for setting and accessing private services in Container
  • removed support for setting pre-defined services in Container
  • removed support for case insensitivity of parameter names
  • removed AutowireExceptionPass and AutowirePass::getAutowiringExceptions(), use Definition::addError() and the DefinitionErrorExceptionPass instead

3.4.0

  • moved the ExtensionCompilerPass to before-optimization passes with priority -1000
  • deprecated "public-by-default" definitions and aliases, the new default will be "private" in 4.0
  • added EnvVarProcessorInterface and corresponding "container.env_var_processor" tag for processing env vars
  • added support for ignore-on-uninitialized references
  • deprecated service auto-registration while autowiring
  • deprecated the ability to check for the initialization of a private service with the Container::initialized() method
  • deprecated support for top-level anonymous services in XML
  • deprecated case insensitivity of parameter names
  • deprecated the ResolveDefinitionTemplatesPass class in favor of ResolveChildDefinitionsPass
  • added TaggedIteratorArgument with YAML (!tagged foo) and XML (<service type="tagged"/>) support
  • deprecated AutowireExceptionPass and AutowirePass::getAutowiringExceptions(), use Definition::addError() and the DefinitionErrorExceptionPass instead

3.3.0

  • deprecated autowiring services based on the types they implement; rename (or alias) your services to their FQCN id to make them autowirable
  • added "ServiceSubscriberInterface" - to allow for per-class explicit service-locator definitions
  • added "container.service_locator" tag for defining service-locator services
  • added anonymous services support in YAML configuration files using the !service tag.
  • added "TypedReference" and "ServiceClosureArgument" for creating service-locator services
  • added ServiceLocator - a PSR-11 container holding a set of services to be lazily loaded
  • added "instanceof" section for local interface-defined configs
  • added prototype services for PSR4-based discovery and registration
  • added ContainerBuilder::getReflectionClass() for retrieving and tracking reflection class info
  • deprecated ContainerBuilder::getClassResource(), use ContainerBuilder::getReflectionClass() or ContainerBuilder::addObjectResource() instead
  • added ContainerBuilder::fileExists() for checking and tracking file or directory existence
  • deprecated autowiring-types, use aliases instead
  • added support for omitting the factory class name in a service definition if the definition class is set
  • deprecated case insensitivity of service identifiers
  • added "iterator" argument type for lazy iteration over a set of values and services
  • added file-wide configurable defaults for service attributes "public", "tags", "autowire" and "autoconfigure"
  • made the "class" attribute optional, using the "id" as fallback
  • using the PhpDumper with an uncompiled ContainerBuilder is deprecated and will not be supported anymore in 4.0
  • deprecated the DefinitionDecorator class in favor of ChildDefinition
  • allow config files to be loaded using a glob pattern
  • [BC BREAK] the NullDumper class is now final

3.2.0

  • allowed to prioritize compiler passes by introducing a third argument to PassConfig::addPass(), to Compiler::addPass and to ContainerBuilder::addCompilerPass()
  • added support for PHP constants in YAML configuration files
  • deprecated the ability to set or unset a private service with the Container::set() method
  • deprecated the ability to check for the existence of a private service with the Container::has() method
  • deprecated the ability to request a private service with the Container::get() method
  • deprecated support for generating a dumped Container without populating the method map

3.0.0

  • removed all deprecated codes from 2.x versions

2.8.0

  • deprecated the abstract ContainerAware class in favor of ContainerAwareTrait
  • deprecated IntrospectableContainerInterface, to be merged with ContainerInterface in 3.0
  • allowed specifying a directory to recursively load all configuration files it contains
  • deprecated the concept of scopes
  • added Definition::setShared() and Definition::isShared()
  • added ResettableContainerInterface to be able to reset the container to release memory on shutdown
  • added a way to define the priority of service decoration
  • added support for service autowiring

2.7.0

  • deprecated synchronized services

2.6.0

  • added new factory syntax and deprecated the old one

2.5.0

  • added DecoratorServicePass and a way to override a service definition (Definition::setDecoratedService())
  • deprecated SimpleXMLElement class.

2.4.0

  • added support for expressions in service definitions
  • added ContainerAwareTrait to add default container aware behavior to a class

2.2.0

  • added Extension::isConfigEnabled() to ease working with enableable configurations
  • added an Extension base class with sensible defaults to be used in conjunction with the Config component.
  • added PrependExtensionInterface (to be able to allow extensions to prepend application configuration settings for any Bundle)

2.1.0

  • added IntrospectableContainerInterface (to be able to check if a service has been initialized or not)
  • added ConfigurationExtensionInterface
  • added Definition::clearTag()
  • component exceptions that inherit base SPL classes are now used exclusively (this includes dumped containers)
  • [BC BREAK] fixed unescaping of class arguments, method ParameterBag::unescapeValue() was made public