herrera-io/service-container

此包已被放弃,不再维护。未建议替代包。

简单的服务容器。

1.1.0 2013-01-31 22:12 UTC

This package is not auto-updated.

Last update: 2021-12-07 01:35:38 UTC


README

Build Status

简单的服务容器。

摘要

此库提供简单的服务容器。它受到Fabien Potencier的Pimple项目(特别是Igor Wielder的修改)的很大影响。与Pimple的不同之处在于

  • 命名约定
  • 服务提供者注册处理
  • 特定于库的异常
  • shared()protect() 的不同实现

安装

将其添加到Composer依赖列表中

$ composer require herrera-io/service-container=1.*

使用

简单使用

<?php

use Herrera\Service\Container;

$container = new Container(array('var' => 123));

$container['factory'] = $container->many(function () {
    return new ArrayObject(array('rand' => rand()));
});

$container['shared'] = $container->once(function() {
    return new ArrayObject(array('rand' => rand()));
});

echo $container['factory']['rand']; // echo "1197692050"
echo $container['factory']['rand']; // echo "995449132"
echo $container['shared']['rand']; // echo "89432412"
echo $container['shared']['rand']; // echo "89432412"

服务提供者使用

<?php

use Herrera\Service\Container;
use Herrera\Service\ProviderInterface;

class MyProvider implements ProviderInterface
{
    public function register(Container $container)
    {
        $container['hello'] = $container->once(function (Container $container) {
            echo 'Hello, ', $container['name'], "!\n";
        });
    }
}

$container =  new Container();
$container->register(new MyProvider(), array(
    'name' => 'Guest'
));