netolabs / simple-container
PSR-11 标准的极简且快速实现
v0.2.4
2021-11-03 05:26 UTC
Requires
- php: >=7.3
- psr/container: ^1.0
Requires (Dev)
- phake/phake: ^3.1
- phpmd/phpmd: 2.8.*
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
Provides
README
PSR-11 容器标准的极简且快速实现。它不打算进行复杂的依赖注入,只是最基本的实现。考虑使用 PHP-DI 或 Symfony DI 来实现更完整的依赖注入。
安装
通过 Composer
$ composer require netolabs/simple-container
需求
需要 PHP 7.3 及以上版本。
使用方法
向容器中添加定义
$container = new SimpleContainer(); $service = new MySuperCoolService(); $container->set(MySuperCoolService::class, $service);
从容器中获取
if ($container->has(MySuperCoolService::class) { $service = $container->get(MySuperCoolService::class); }
添加可调用定义
在此处,我们添加了一个匿名函数,该函数将在第一次通过 set()
访问定义时被调用。计算后的值将被缓存以供后续访问。
$container = new SimpleContainer(); $container->set('myCallable', function() { return 'a computed value'; }); $value = $container->get('myCallable'); // value is 'a computed value'
每次访问时调用可调用对象
如果您需要每次访问定义时都调用可调用对象,可以使用 resolve()
方法。
$value = $container->resolve('myCallable'); // value is 'a computed value'
许可证
MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。