我们如何在依赖注入控制器中添加值?

时间:2015-08-06 16:52:52

标签: java php spring laravel dependency-injection

我有一个数据访问对象(DAO)类,需要在几个模型中注入它。

$dao = new DAO("mysql", "username", "password")
$userModel = new UserModel($dao);

使用依赖注入对我来说非常重要。所以看起来应该是这样的:

//My DAO class
class DAO($connection, $username, $password) {
    $this->connection = $connection;
    $this->username = $username;
    $this->password = $password;
}

//My user model that I am injection the DAO class into
class UserModel(DAO $dao) {     //Where should i add my connection/username and password?
    $this->dao = $dao;
}

不幸的是,我找不到在构造函数中指定连接和凭据的方法。我还想在其他地方使用相同的DAO和UserModel实例。

问题:如何针对不同的模型/服务确定不同的连接/凭据,以保持相同的DAO实例?

P.S。我看过疙瘩,laravel DI,Spring ......但似乎无法找到一个好的解决方案。

1 个答案:

答案 0 :(得分:1)

Laravel的IoC容器允许您为不同的类指定不同的解析器。

使用when()->needs()->give()流程:

$container->when('UserModel')->needs('DAO')->give(function () {
    return new DAO('connectionA', 'usernameA', 'passwrodA');
});

$container->when('PostModel')->needs('DAO')->give(function () {
    return new DAO('connectionB', 'usernameB', 'passwrodB');
});

the docs。查找标题为上下文绑定的部分。