复杂任务的依赖注入

时间:2015-01-06 10:08:53

标签: php laravel dependency-injection dependencies code-injection

过去几周我一直在阅读关于依赖注入,反转,技术,IoC等等的很多内容......虽然我理解这个原则但到目前为止我还不能得到一些东西。

让我们说我们有一个控制器必须订阅某些服务。我们需要的是以下内容:

  1. 验证请求(月,年,计划)
  2. 添加订阅数据库
  3. 将结算发票添加到数据库(付款信息)
  4. 更新用户以指定他已订阅
  5. 处理付款
  6. 向用户显示信息并重定向到成功页面
  7. 这是一项复杂的任务,如果我们必须遵循Skinny Controller和Fat Model意味着它会很难。许多开发人员还声明,如果您有超过4个依赖项,则必须简化类并遵循一个“责任”原则。这给我带来了很多问题。

    • 我如何前往这里?
    • 如何隔离控制器?
    • 如何使其全部可测试?
    • 如何从控制器/类传递所有依赖项?

1 个答案:

答案 0 :(得分:1)

使用基于命令的Laracasts / Commander,您可以更轻松地完成工作。

同时结帐Jeffrey Way指挥官(https://laracasts.com/search?q=commander&q-where=lessons)。

您的控制器将如下所示:

  1. 获取输入
  2. 致电验证员
  3. 调用调用SubsribeUserCommandHandler句柄方法的$this->execute(New SubscribeUserCommand($email, $data1, $data2))。命令是一个简单的数据对象,包含handle方法所需的所有内容。
  4. 在命令处理程序内部调用任何其他命令来处理您的请求
  5. 查看命令处理程序的结果并向用户显示所需的数据。
  6. Commander还强烈建议您使用事件触发电子邮件或通知......

    UPS的:

    • 控制器中的依赖项很少,
    • 可读控制器
    • 单独测试每个命令

    下:   - 设置更多课程和费用

    希望这有助于或至少让您了解如何解决您的问题。我在我的项目中使用此方法,用户注册,接收欢迎电子邮件,角色...我的控制器大约5行,其余的是命令和命令处理程序