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 and parameters
    • โž• 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)