博客列表 >PHP基础:mvc中的控制器对外部对象的二种依赖注入方式

PHP基础:mvc中的控制器对外部对象的二种依赖注入方式

暴宇
暴宇原创
2020年06月02日 16:53:02938浏览

PHP基础:mvc中的控制器对外部对象的二种依赖注入方式

1.二种依赖注入方式

-注入到普通方法

先将类实例化,再将外部对象作为参数传入类方法中

-注入到构造方法

在类实例化时将外部对象传入类中,用构造方法将外部对象在类中共享

2.代码示例

2.1注入到普通方法

  1. <?php
  2. namespace mvc_demo;
  3. // 控制器1
  4. // 1. 加载模型类
  5. require 'Model.php';
  6. // 2. 加载视图
  7. require 'View.php';
  8. // 3. 创建控制
  9. class Controller2
  10. {
  11. public function index(Model $model, View $view)
  12. {
  13. // 1. 获取数据
  14. $data = $model->getData();
  15. // 2. 渲染模板/视图
  16. return $view->fetch($data);
  17. }
  18. }
  19. // 客户端
  20. $model = new Model;
  21. $view = new View;
  22. // 实例化控制器类
  23. $controller = new Controller2;
  24. echo $controller->index($model, $view);

2.2注入到构造方法

  1. <?php
  2. <?php
  3. namespace mvc_demo;
  4. // 控制器依赖注入点改到构造方法, 实现对外部依赖对象的共享
  5. // 1. 加载模型类
  6. require 'Model.php';
  7. // 2. 加载视图
  8. require 'View.php';
  9. // 3. 创建控制
  10. class Controller3
  11. {
  12. // 依赖对象属性
  13. private $model;
  14. private $view;
  15. // 构造方法
  16. public function __construct(Model $model, View $view)
  17. {
  18. $this->model = $model;
  19. $this->view = $view;
  20. }
  21. public function index()
  22. {
  23. // 1. 获取数据
  24. $data = $this->model->getData();
  25. // 2. 渲染模板/视图
  26. return $this->view->fetch($data);
  27. }
  28. public function index2()
  29. {
  30. // 1. 获取数据
  31. $data = $this->model->getData();
  32. // 2. 渲染模板/视图
  33. return $this->view->fetch($data);
  34. }
  35. }
  36. // 客户端
  37. $model = new Model;
  38. $view = new View;
  39. // 实例化控制器类
  40. $controller = new Controller3($model, $view);
  41. echo $controller->index();

3.运行效果一样

4.总结

MVC控制器对外部对象的依赖注入,就是将外部对象引入到当前控制器,让控制器可以对外部对象进行操作,依赖注入也可以理解为对外部对象的引用

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议