itlessons/php-ioc

PHP 控制反转(IoC)库

0.0.1 2015-02-27 17:28 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:13:43 UTC


README

一个非常简单的用于管理类依赖的工具。依赖注入是一种移除硬编码类依赖的方法。相反,依赖在运行时注入,这使得更加灵活,因为依赖实现可以轻松地互换。

以下是一个简单的示例,展示了如何注册服务和参数

use IoC\Container;

$c = new Container();

$c->setParameter('cache', array(
    'host' => '127.0.0.1',
    'port' => 11211,
));

$c->singleton('cache', function (Container $c) {
    $cache = new Memcached();
    $cache->addServer(
        $c->getParameter('cache.host'),
        $c->getParameter('cache.port')
    );
    return $cache;
});

// single instance of Memcached
$value = $c->make('cache');

解析类的依赖

use IoC\Container;

$c = new Container();
$c->singleton('cache', 'MemcachedCache');

class MemcachedCache extends Cache
{
    public function __construct(Memcached $cache)
    {
        $this->cache = $cache;
    }
}

$cache = $c->make('cache');

解析一个简单类

use IoC\Container;

$c = new Container();

class FooBar
{
    public function __construct(Container $c, Baz $baz)
    {
        $this->container = $c;
        $this->baz = $baz;
    }
}

$fooBar = $c->make('FooBar');

将接口绑定到实现

use IoC\Container;

$c = new Container();
$c->bind('UserRepositoryInterface', 'DbUserRepository');

class UserController extends BaseController {

    public function __construct(UserRepositoryInterface $users)
    {
        $this->users = $users;
    }

}

$c->make('UserController');

安装

推荐通过 Composer 安装 php-ioc。只需创建一个 composer.json 文件,并运行 php composer.phar install 命令即可安装。

{
    "require": {
        "itlessons/php-ioc": "*"
    }
}

或者,您可以下载 php-ioc.zip 文件并解压缩。

资源

您可以使用以下命令运行单元测试

$ cd path/to/php-ioc/
$ composer.phar install
$ phpunit

链接

[在您的php项目中实现Inversion of Control (IoC) 原则] (http://www.itlessons.info/php/inversion-of-control/)