naylonkessler/con-boss

轻量级的DI和IoC上下文管理器

v0.0.0 2017-02-17 09:16 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:31:28 UTC


README

SensioLabsInsight Build Status

ConBoss是一个用于依赖注入和反转控制概念的轻量级上下文管理器(容器)。它旨在简单轻量,但仍然强大。

安装

只需使用composer要求该包。

composer require naylonkessler/con-boss

使用该包

导入并创建一个容器

<?php

use ConBoss\Container;

$container = new Container();

在绑定一些依赖项之后

// Bind a name to a class FQN
$container->bind('name', Some\Class::class);

// Bind an interface FQN to a class FQN
$container->bind(Some\Interface::class, Some\Class::class);

// Bind an interface FQN to a factory closure
$container->bind(Some\Interface::class, function ($container) {
    return new \Some\Class();
});

// Bind a variable
$container->bind('$varName', 'Any content');

// Bind an interface FQN to a shared class FQN
$container->share(Shared\Interface::class, Some\Shared\Class::class);

最后从容器请求一些绑定

// Get some bind name from container
$some = $container->get('name');

// Get some variable from container
$var = $container->get('$varName');

// Get multiple values from container
list($name, $var) = $container->get(['name', '$varName']);

您也可以从容器中解绑某些内容并检查是否存在绑定

// Unbind a name from container
$container->unbind('name');

// Check if some bind exists
$exists = $container->has('name');

除了返回特定值的Container::get()Container::has()方法外,如果您喜欢,您还可以利用链式调用

// Chained calls
$container->share('some-shared', Some\Shared::class)
    ->bind('some-bind', Some\Bind::class)
    ->bind('$someVar', 10);