hexmakina/le-marchand

LeMarchand 是一个 PSR-11 容器

安装: 194

依赖: 1

建议者: 0

安全性: 0

星星: 1

关注者: 1

分支: 0

开放问题: 2

类型:package

0.2.0 2022-08-25 07:35 UTC

This package is auto-updated.

Last update: 2024-09-05 00:15:30 UTC


README

Scrutinizer Code Quality PSR-4 Compliant PSR-11 Compliant PSR-12 Compliant PHP 7.0 Required Latest Stable Version License

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"。