Blogger Information
Blog 29
fans 0
comment 0
visits 27270
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础:mvc中的控制器对外部对象的二种依赖注入方式
暴宇
Original
939 people have browsed it

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控制器对外部对象的依赖注入,就是将外部对象引入到当前控制器,让控制器可以对外部对象进行操作,依赖注入也可以理解为对外部对象的引用

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:简单的设计 模式还是要知道一些的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!