runner / container
runner框架的容器
v1.0.3
2020-05-15 15:29 UTC
Requires
- php: >=7.1
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-09-16 01:29:12 UTC
README
一个用于PHP的小型IoC容器
安装
$ composer require runner/container
用法
创建容器的实例,并使用名称将服务绑定到容器中。
基本绑定
use Runner\Container\Container; $container = new Container(); $container->bind('stack', SplStack::class); $container->make('stack'); $container->bind(ArrayAccess::class, function () { return new ArrayObject(); });
绑定实现
使用接口名称作为名称,并将具体实现绑定到它
$container->bind(ArrayAccess::class, function () { return new ArrayObject(); }); $container->make(ArrayAccess::class);
单例绑定
$container->bind( 'db', function () { return new PDO(); }, true ); $container->bind();
实例绑定
另一种单例绑定的方式
$pdo = new PDO(); $container->instance('db', $pdo);
别名绑定
将别名绑定到已注册的服务
$container->bind(CacheInterface::class, function () { return new FileCache(); }); $container->bind('cache', CacheInterface::class, true); $container->make('cache');
祝您玩得开心 :)
上下文绑定
在注入时为类绑定不同的实现
$container->bind(CacheInterface::class, function () { return new FileCache(); }); $container->bind('redis_cache', function () { return new RedisCache(); }); $container->bindContext( PageController::class, CacheInterface::class, function (Container $container) { return $container->make('redis_cache'); } ); $controller = $container->make(PageController::class);
参考资料
许可证
MIT