itlessons / php-ioc
PHP 控制反转(IoC)库
0.0.1
2015-02-27 17:28 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
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/)