nazg/glue

HHVM/Hack 的依赖注入容器

安装量: 10,944

依赖者: 2

建议者: 0

安全: 0

星星: 3

关注者: 2

分支: 0

开放问题: 0

语言:Hack

1.5.1 2020-07-02 23:22 UTC

This package is auto-updated.

Last update: 2024-09-07 20:54:23 UTC


README

Hack 的依赖注入容器

Travis (.org) Packagist Packagist Version Packagist

要求

HHVM 4.35.0 及以上。

安装

Composer 是推荐的安装方法。
要将 Nazg\Glue 添加到您的项目中,请将以下内容添加到您的 composer.json 中,然后重新运行 composer:

  "require": {
    "nazg/glue": "^1.4"
  }

使用 HHVM 运行 Composer 命令如下:

$ composer install

此外,您需要将 hhvm-autoload 作为自动加载器使用。

或者

$ composer require nazg/glue

使用方法

第一步

创建类

interface AnyInterface {

}
final class Any implements AnyInterface {
  // any
}

绑定

use type Nazg\Glue\Container;
use type Nazg\Glue\Scope;

$container = new Container();
$container->bind(AnyInterface::class)
  ->to(Mock::class)
  ->in(Scope::PROTOTYPE);
\HH\Asio\join($container->lockAsync());

依赖项将被自动解决

$container->get(AnyInterface::class);

作用域

使用 Nazg\Glue\Scope 枚举。

enum Scope : int {
  PROTOTYPE = 0;
  SINGLETON = 1;
}

提供者

使用 \Nazg\Glue\ProviderInterface。

use type Nazg\Glue\ProviderInterface;

final class AnyProvider implements ProviderInterface<AnyInterface> {

  public function get(): AnyInterface {
    return new Any();
  }
}
$container->bind(AnyInterface::class)
  ->provider(new AnyProvider();

绑定序列化缓存

use type Nazg\Glue\ContainerBuilder;

$builder = new ContainerBuilder(true, 'apc.cache.key.name');
// return a \Nazg\Glue\CachedContainer Instance
$container = $builder->make();