g4/di

基于 Pimple 的 g4 依赖注入容器

1.0.2 2022-03-30 13:19 UTC

This package is auto-updated.

Last update: 2024-08-29 03:49:06 UTC


README

DI - 依赖注入容器 - 单例 Pimple 包装 https://github.com/silexphp/Pimple

  • 通过方法而非数组属性访问
  • 无需每次需要时都记住 DI 数组键(或回到 DI 类去查找)
  • 类型提示

安装

使用 Composer 和 Packagist https://packagist.org.cn/packages/g4/di

composer require g4/di

用法

服务通过返回对象实例的匿名函数定义。在您的应用程序中,将所有服务定义在一个 DI 容器类中

namespace MyNamespace;

use G4\DI\Container;

class DI extends Container
{
    /**
     * @return \MyNamespace\MyConfig
     */
    public static function configInstance()
    {
        return self::registerShare(function (DI $c) {
            return new \MyNamespace\MyConfig();
        });
    }
    
    /**
     * @return \MyNamespace\MyClass
     */
    public static function myClassInstance()
    {
        return self::registerFactory(function (DI $c) {
            return new \MyNamespace\MyClass($c::configInstance());
        });
    }
}

方法

  • registerFactory($callable) - 注册一个每次都返回新实例的服务
  • registerShare($callable) - 注册一个每次都返回相同实例的服务

使用定义的服务

use MyNamespace\DI;

$myClass = DI::myClassInstance();

// the above call is equivalent to:
// $myConfig = new \MyNamespace\MyConfig();
// $myClass = new \MyNamespace\MyClass($myConfig);

开发

安装依赖项

$ make install

运行测试

$ make test

许可证

(MIT 许可证) 详细信息请参阅 LICENSE 文件...