runner/container

runner框架的容器

v1.0.3 2020-05-15 15:29 UTC

This package is auto-updated.

Last update: 2024-09-16 01:29:12 UTC


README

一个用于PHP的小型IoC容器

StyleCI

安装

$ 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