strident / container
易于使用和快速依赖注入容器组件,专为Trident构建。深受Pimple的启发。
2.0.0
2015-02-20 23:49 UTC
Requires
- php: >=5.4
Requires (Dev)
- codeclimate/php-test-reporter: ~0.1
- phpunit/phpunit: ~4.5
This package is not auto-updated.
Last update: 2024-09-14 16:39:50 UTC
README
易于使用和快速依赖注入容器组件,专为Trident构建。深受Pimple的启发。
##安装
安装可通过Composer进行。将包添加到您的composer.json文件中
$ composer require strident/container ~2.0
##使用
容器实例化非常简单。只需做以下操作
use Strident\Container\Container; $container = new Container();
###定义服务
从那里,您可以定义服务如下
// 'Service' class defined somewhere, and 'dependency_name' service defined $container->set("service_name", function($container) { return new Service($container->get("dependency_name")); });
服务是懒加载的(即,直到调用时才进行实例化)。
###在定义后扩展服务
您也可以在定义服务后扩展服务(例如,如果您希望增强服务、更改设置、更换依赖项等)。但请注意,一旦服务被使用,它就变为锁定状态,无法进一步修改。
$container->extend("service_name", function($service, $container) { $service->doSomething(); $service->addSomething($container->get("dependency_name")); return $service; });
###定义工厂服务
如果您希望每次返回服务的新实例而不是相同的实例,您可以定义一个工厂服务如下
$container->set("service_name", $container->factory(function($container) { return new Service($container->get("dependency_name")); }));
###参数
通过像数组一样访问容器来获取/设置参数
// Set $container["foo"] = "A parameter can be anything"; // Get $foo = $container["foo"];