zendframework/zend-di
zendframework/zend-di is a PHP dependency injection container for Zend Framework apps. It supports autowiring, configurable definitions, and factories to build and wire objects at runtime, helping manage dependencies and improve testability.
#34 adds the ability to pass a
Psr\Log\LoggerInterface instance to the constructor of Zend\Di\CodeGenerator\InjectorGenerator
(e.g. new InjectorGenerator($config, $resolver, $namespace, $logger))
#31 adds the service
factory Zend\Di\Container\GeneratorFactory for creating a
Zend\Di\CodeGenerator\InjectorGenerator instance with zend-servicemanager.
#38 adds Zend\Di\Resolver\InjectionInterface that defines the
return type of Zend\Di\Resolver\DependencyResolverInterface::resolveParameters() to prepare a stable interface for
future releases. This will not affect you unless you have implemented a custom dependency resolver that returns other
items than Zend\Di\Resolver\TypeInjection or Zend\Di\Resolver\ValueInjection. In this case you need to change the
returned items to implement this interface.
#38 adds parameter and return types to:
Zend\Di\CodeGenerator\AutoloadGeneratorZend\Di\CodeGenerator\FactoryGeneratorZend\Di\CodeGenerator\InjectorGenerator#31 adds the method
getOutputDirectory() to Zend\Di\CodeGenerator\GeneratorTrait.
#31 adds the method
getNamespace() to Zend\Di\CodeGenerator\InjectorGenerator.
#37 removes the use of count()
in Zend\Di\CodeGenerator\FactoryGenerator::buildParametersCode() to improve performance
#38 adds strictness to
Zend\Di\CodeGenerator\FactoryGenerator::generate():
string return type.RuntimeException on failures.#38 removes inheritance of
Zend\Di\Resolver\AbstractInjection:
Zend\Di\Resolver\ValueInjectionZend\Di\Resolver\TypeInjection#38 adds implementation of
Zend\Di\Resolver\InjectionInterface:
Zend\Di\Resolver\ValueInjectionZend\Di\Resolver\TypeInjection#38 deprecates Zend\Di\Resolver\AbstractInjection.
in favour of Zend\Di\Resolver\InjectionInterface
#38 deprecates Zend\Di\Resolver\TypeInjection::getType
in favour of __toString().
#38 deprecates Zend\Di\Resolver\ValueInjection::getValue()
in favour of toValue().
zend-codeZend\Di\Injector.Zend\Di\DefaultContainer implementing Psr\Container\ContainerInterface:
build() to be signature compatible with Zend\ServiceManager\ServiceManager.Zend\Di\Injector implementing Zend\Di\InjectorInterface
Psr\Container\ContainerInterface implementation for purposes of resolving dependencies. By default, this is the DefaultContainer implementation.Zend\Di\Resolver\DependencyResolverInterface to resolve arguments to their types.PHP 7.1 type safety.
Classes to wrap value and type injections.
Support for zend-component-installer. This allows it to act as a standalone config-provider or zend-mvc module, and eliminates the need for zend-servicemanager-di.
Zend\Di\ConfigInterface to allow providing custom configuration.
Code generator for generating a pre-resolved injector and factories.
Renames Zend\Di\DependencyInjectionInterface to Zend\Di\InjectorInterface. It defines the injector to create new instances based on a class or alias name.
newInstance() changes to create().has() changes to canCreate().get().Moves strategies to resolve method parameters to Zend\Di\Resolver
Support for PHP versions less than 7.1
Support for HHVM.
Zend\Di\Defintion\CompilerDefinition in favour of Zend\Di\CodeGenerator.
Zend\Di\InstanceManager, Zend\Di\ServiceLocator, Zend\Di\ServiceLocatorInterface and Zend\Di\LocatorInterface in favor of Psr\Container\ContainerInterface.
Zend\Di\Di is removed in favour of Zend\Di\DefaultContainer.
Zend\Di\DefinitionList
Zend\Di\Definition\BuilderDefinition
Zend\Di\Definition\ArrayDefinition
Parameters passed to newInstance() will only be used for constructing the
requested class and no longer be forwarded to nested objects.
get() no longer supports a $parameters array; newInstance() still does.
Removed setter/method injections.
Generators in Zend\Di\ServiceLocator in favor of Zend\Di\CodeGenerator.
InstanceManager::sharedInstancesWithParams() behaves when multiple calls are made with different sets of parameters (it should return different instances in that situation).LocatorInterface to extend Interop\Container\ContainerInterface. This required adding the following methods:
Zend\Di\Di::has()Zend\Di\ServiceLocator::has()Zend\Di\Di::resolveMethodParameters() to catch container-interop exceptions instead of the zend-servicemanager-specific exception class. Since all zend-servicemanager exceptions derive from container-interop, this provides more flexibility in using any container-interop implementation as a peering container.How can I help you explore Laravel packages today?