minphp / container
基于 Pimple 的依赖注入容器
2.1.0
2016-04-01 22:49 UTC
Requires
- php: >=5.3.0
- container-interop/container-interop: ^1.0
- pimple/pimple: ^3.0
Requires (Dev)
- phpunit/phpunit: ^4.0
- satooshi/php-coveralls: ^1.0
- squizlabs/php_codesniffer: ^2.2
This package is auto-updated.
Last update: 2024-09-23 09:43:00 UTC
README
安装
通过 composer 安装
composer require minphp/container:~2.0
基本用法
<?php use Minphp\Container\Container; $container = new Container(); // Add/Update $container->set('queue', function($c) { return new \SplQueue(); }); // Verify $queue_exists = $container->has('queue'); // Fetch $queue = $container->get('queue'); // Remove $container->remove('queue');
您也可以像 Pimple 一样将容器作为数组使用。尽管如此,使用定义的 ContainerInterface 方法更可取,因为它可以在需要时轻松切换到不同的容器。
<?php use Minphp\Container\Container; $container = new Container(); $container['queue'] = function($c) { return new \SplQueue(); }; $queue = $container['queue'];
ContainerInterface
interface ContainerInterface { // inherited from Interop\Container\ContainerInterface public function get($id); // inherited from Interop\Container\ContainerInterface public function has($id); public function set($id, $value); public function remove($id); }
ContainerAwareInterface
还提供了 ContainerAwareInterface,它允许您的类声明它们支持容器注入。对于授予对象对容器(你不会想使用静态类,对吧?)的访问权限非常有用。
interface ContainerAwareInterface { public function setContainer(Minphp\Container\ContainerInterface $container = null); public function getContainer(); }
用法
<?php namespace myApp\Controller; use Minphp\Container\ContainerAwareInterface; use Minphp\Container\ContainerInterface; class MyController implements ContainerAwareInterface { private $container = null; public function setContainer(ContainerInterface $container = null) { $this->container = $container; } public function getContainer() { return $this->container; } }