chubbyphp/chubbyphp-container
最新稳定版本:2.4.0
Composer 安装命令:
composer require chubbyphp/chubbyphp-container
包简介
A simple PSR-11 container implementation.
README 文档
README
Description
A minimal Dependency Injection Container (DIC) which implements PSR-11. DI Container Benchmark.
There is a laminas service manager adapter at chubbyphp/chubbyphp-laminas-config.
Requirements
- php: ^8.3
- psr/container: ^2.0.2
Installation
Through Composer as chubbyphp/chubbyphp-container.
composer require chubbyphp/chubbyphp-container "^2.4"
Usage
There are two PSR-11 implementations:
Chubbyphp\Container\Containerprototype (each get will return a new instance) and shared servicesChubbyphp\Container\MinimalContainershared services
MinimalContainer / Container
Factories
<?php use App\Service\MyService; use Chubbyphp\Container\MinimalContainer; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; $container = new MinimalContainer(); $container->factories([ MyService::class => static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); }, ]);
Factory
<?php use App\Service\MyService; use Chubbyphp\Container\MinimalContainer; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; $container = new MinimalContainer(); // new $container->factory(MyService::class, static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); }); // existing (replace) $container->factory(MyService::class, static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); }); // existing (extend) $container->factory( MyService::class, static function (ContainerInterface $container, callable $previous): MyService { $myService = $previous($container); $myService->setLogger($container->get(LoggerInterface::class)); return $myService; } );
Factory with Parameter
<?php use Chubbyphp\Container\MinimalContainer; use Chubbyphp\Container\Parameter; $container = new MinimalContainer(); $container->factory('key', new Parameter('value'));
Get
<?php use App\Service\MyService; use Chubbyphp\Container\MinimalContainer; $container = new MinimalContainer(); $myService = $container->get(MyService::class);
Has
<?php use App\Service\MyService; use Chubbyphp\Container\MinimalContainer; $container = new MinimalContainer(); $container->has(MyService::class);
Container
All methods of the MinimalContainer and the following:
Prototype Factories
each get will return a new instance
<?php use App\Service\MyService; use Chubbyphp\Container\Container; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; $container = new Container(); $container->prototypeFactories([ MyService::class => static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); }, ]);
Prototype Factory
each get will return a new instance
<?php use App\Service\MyService; use Chubbyphp\Container\Container; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; $container = new Container(); // new $container->prototypeFactory( MyService::class, static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); } ); // existing (replace) $container->prototypeFactory( MyService::class, static function (ContainerInterface $container): MyService { return new MyService($container->get(LoggerInterface::class)); } ); // existing (extend) $container->prototypeFactory( MyService::class, static function (ContainerInterface $container, callable $previous): MyService { $myService = $previous($container); $myService->setLogger($container->get(LoggerInterface::class)); return $myService; } );
Migration
Copyright
2025 Dominik Zogg
统计信息
- 总下载量: 75.09k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 19
- 点击次数: 1
- 依赖项目数: 15
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2019-11-22