thumbtack/ttinjector

该包已被弃用,不再维护。未建议替代包。

使用依赖注入构建任何东西

1.0.4 2016-03-16 01:34 UTC

This package is not auto-updated.

Last update: 2023-09-30 11:06:23 UTC


README

Build Status

这是一个简单的依赖注入器。

它分两个阶段工作。首先,您注册所有依赖项并描述它们之间的关系。然后,您从这些依赖项构建一个可以注入您添加的值的注入器。

安装

要安装,请使用 composer 并运行

composer require thumbtack/ttinjector

如何使用注入器

1. 创建一个Dependencies对象

use TT\injector\Dependencies;

$dependencies = new Dependencies();

2. 添加一些依赖项

// Use register_value() to add constant values.
$dependencies->register_value('current_user_id', 12345);

// Use register_factory() to add things you don't want to construct unless used...
$dependencies->register_factory('db_connection', [], function() {
   return Database::Connect();
});

// ...Or things that have dependencies of their own.
$dependencies->register_factory(
   'users_source'
   ['db_connection'],
   function ($db) {
       return function($user_id) use ($db) {
          return $db->query('users')->where_equals('user_id', $user_id);
       };
   }
);

3. 构建注入器

$injector = $dependencies->build_injector();

build_injector() 函数将检查您设置的依赖项中是否存在错误(缺少依赖项或依赖项循环)。

注入器对象是不可变的。

4. 注入您的依赖项!

function current_user($current_user_id, $users_source) {
   return $users_source($current_user_id);
}

$user = $injector->inject('current_user', ['current_user_id', 'users_source']);