hexmakina / le-marchand
LeMarchand 是一个 PSR-11 容器
0.2.0
2022-08-25 07:35 UTC
Requires
- php: >=7.1
- psr/container: ^1.0
Provides
README
LeMarchand
为 kadro 框架提供的 PSR-11 容器基本构建,目前正是一个与服务定位器打趣依赖注入概念的工具
安装
composer require hexmakina/le-marchand
使用方法
实例化和加载配置数组
$settings = [
'app' => [
'name' => 'KORAL',
'production_host' => 'engine.hexmakina.be',
'session_start_options' => ['session_name' => 'koral-alias'],
'time_window_start' => '-3 months',
'time_window_stop' => '+1 month',
],
'controller_namespaces' => [
'App\\Controllers\\',
'HexMakina\\koral\\Controllers\\',
'HexMakina\\kadro\\Controllers\\'
]
];
$box=new LeMarchand($settings);
设置可以通过 'settings' 键获取,即
$box->has('settings'); // returns true;
$box->has('settings.app.name'); // return true;
$box->get('settings.app.name'); // returns KORAL
注册额外的服务
$box=new LeMarchand($settings);
$box->register('HexMakina\Crudites\DatabaseInterface', $database);
我们有配置吗?
我们能获取它吗?
根据 PSR-11 规范
- 对 has 方法的非存在 ID 的调用返回 false
- 对 get 方法的非存在 ID 的调用抛出 Psr\Container\NotFoundExceptionInterface。
$box->has('NonExistingKey'); //return false
$box->get('NonExistingKey'); //throws a Psr\Container\NotFoundExceptionInterface
get 方法需要一个强制参数:一个条目标识符,它必须是一个字符串
$box->has(23); // return false;
$box->get(23); // throws a Psr\Container\ContainerExceptionInterface
传说与敬意
在《地狱神探》电影系列中被称为《哀悼配置》的 LeMarchand 盒子,在《地狱之心》短篇小说中被称为 "the Lemarchand Configuration"。