Nette DI v3.0.0 Release Notes
Release Date: 2019-04-03 // about 5 years ago-
๐ Features
- requires PHP 7.1
- ๐ uses declare(strict_types=1)
- ๐ uses PHP 7.1 scalar and return type hints
- autowiring via Service[] (#178)
- โ added collections via tagged() and typed()
- โ added SearchExtension
- โ added Schema & CompilerExtension::getConfigSchema() for automatic configuration validation with PHP 7.4 support #191
- โ added full validation of dynamic parameters
- ๐ configs are normalized before merge
- โ added AccessorDefinition, FactoryDefinition, LocatorDefinition & ImportedDefinition
- Container::addService() accepts factory closures
- ๐ Minification of metadata: added option 'di โบ export โบ types',
tags
andparameters
- โ added Reference, object representing reference to @service of @\Class
- ๐ better exception messages
- Helpers::expand() expands %params% in keys [Closes nette/nette#766]
- ๐ Helpers::expand() supports %dynamic.item% for dynamic parameters
- Compiler, CompilerExtension: improved Loader extendability (#62)
- ServiceDefinition::setArgument() added [Closes #171][Closes #172]
- ๐จ Processor: names of anonymous services are just numbers
- ContainerBuilder::addDefinition(null) adds anonymous service
- โ added PhpStorm metadata for autocompletion
- โ added CompilerExtension::loadDefinitionsFromConfig()
- ๐ Loader: added support for %param% in 'include' section [Closes #170][Closes phpstan/phpstan#2020]
๐ Changes
- โ removed deprecated support for inheritance 'child < parent' (BC break)
- some classes & members marked as final (BC break)
- Compiler: container has declare(strict_types=1)
- โ removed unused PhpReflection
- ๐จ Processor::filterArguments() translates @service to object Reference
- ๐ Nette\DI\Helpers::filterArguments() moved to Nette\DI\Config\Processor
- Config\Processor: options 'class' & 'type', 'dynamic' & 'imported' are aliases
- ๐ Compiler::loadDefinitions() is not static and removed first parameter (BC break)
- ๐ Compiler::loadDefinition() is deprecated (BC break)
- ๐ Compiler: processing of config files moved to new class Nette\DI\Config\Processor
- ServiceDefinition divided into Definition & ServiceDefinition
- ContainerBuilder divided into Autowiring & Resolver
- ๐ ServiceDefinition & Statement moved to Nette\DI\Definitions namespace
- ๐ renamed Nette\DI\Config\IAdapter -> Adapter
- ๐ NeonAdapter: added deprecation notice for operator ?
- โ removed IniAdapter (BC break) (#177)
- ServiceBuilder::setType() & getType() as a replacements for setClass() and getClass()
- ๐ง Compiler: added configuration option 'type' as replacement for 'class'
- ๐ ServiceDefinition::setClass() parameter $args is deprecated (BC break) (#146)
- ๐ Compiler::loadDefinitions() renamed to loadDefinitionsFromConfig(), better deprecation messages
- InjectExtension: tag 'inject' changed to 'nette.inject'
- ๐ DIExtension: tag 'run' is deprecated (BC break)
- ๐ Container: deprecated support for dynamically added services (BC break)
- ๐ Container: removed support for statically added createService* methods (BC break)
- Container::$meta divided to $types, $aliases, $tags & $wiring (BC break)
- Helpers::EXTENDS_KEY & OVERWRITE replaced with PREVENT_MERGING (BC break)