calgamo/registry

此包已被废弃,不再维护。未建议替代包。

依赖注入容器包装接口库

维护者

详细信息

github.com/calgamo/registry

此包尚未发布版本,且信息有限。


README

Latest Version on Packagist Software License Build Status Coverage Status Code Climate Total Downloads

描述

Calgamo/Registry 是一个依赖注入(DI)容器外观库

特性

示例

示例 1:简单使用 registry

use Calgamo\Di\Container;
use Calgamo\Registry\Adapter\CalgamoDiAdapter;
use Calgamo\Registry\Registry;
use Calgamo\Registry\Sample\Human;

try{
    $registry = new Registry('', new CalgamoDiAdapter(new Container));

    $david = new Human('David');
    $registry->set(Human::class, $david);

    $david = $registry->get(Human::class);
    echo 'My name: ' . $david->name . PHP_EOL;
}
catch(\Throwable $e)
{
    die($e->getTraceAsString());
}

输出

My name: David

示例 2:简单使用 regisrtry registry

use Calgamo\Registry\RegistryRegistry;

try{
    $registry_registry = new RegistryRegistry('registry.registry', new CalgamoDiAdapter(new Container));
    $registry = new Registry('human.namespace', new CalgamoDiAdapter(new Container));

    $david = new Human('David');
    $registry->set(Human::class, $david);

    $registry_registry->setRegistry('human.registry', $registry);

    call_user_func(
        function(RegistryRegistry $registry_registry)
        {
            // You can get registry via registry registry.
            $r = $registry_registry->getRegistry('human.registry');

            // You can get object via registry.
            $david = $r->get(Human::class);
            echo 'My name: ' . $david->name . PHP_EOL;
        }
        , $registry_registry);
}
catch(\Throwable $e)
{
    die($e->getTraceAsString());
}

输出

Human registry is registered: 1
My name: David

示例 3:懒加载实例化

try{
    $registry = new Registry('human.registry', new CalgamoDiAdapter(new Container));

    $registry->set(Human::class, function(){
        return new Human('David');
    });

    $david = $registry->get(Human::class);
    echo 'My name: ' . $david->name . PHP_EOL;
}
catch(\Throwable $e)
{
    die($e->getTraceAsString());
}

输出

My name: David

使用方法

要求

PHP 7.0 或更高版本

安装 Calgamo/Registry

推荐通过 Composer 安装 Calgamo/Registry。

composer require calgamo/registry

安装后,您需要引入 Composer 的自动加载器

require 'vendor/autoload.php';

许可

MIT

作者

stk2k

免责声明

此软件不提供任何保证。

我们不承担因使用此软件而产生的任何后果。

请自行承担责任。