博客列表 >MVC架构模式思想

MVC架构模式思想

橙絮圆
橙絮圆原创
2021年08月25日 16:06:24570浏览

MVC架构模式思想

作业标题:0823mvc架构模式思想
作业内容:1. mvc之间的关系并用代码演绎? 2. 你理解的容器与依赖注入? 3. 什么是facade门面, 有什么作用?


  • mvc之间的关系并用代码演绎?

    • Model
      用于建立数据库连接,为控制器(Controller)提供底层数据

      1. <?php
      2. namespace mvc_demo;
      3. use PDO;
      4. class Model
      5. {
      6. public function getData()
      7. {
      8. return (new PDO('mysql:host=localhost;dbname=info','root','root',[PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING]))->query('SELECT `id`,`gender`,`uname`,`create_time` FROM `user` order by id asc LIMIT 11')->fetchAll(PDO::FETCH_ASSOC);
      9. }
      10. public function editData()
      11. {
      12. }
      13. }
    • View
      为最终用户提供显示的模板
    1. <?php
    2. namespace mvc_demo;
    3. // require 'Model.php';
    4. class View {
    5. public function fetch($data)
    6. {
    7. $table = '<table >';
    8. $table.='<caption>用户信息表</caption>';
    9. $table.= '
    10. <tr align="center">
    11. <td>编号</td>
    12. <td>姓名</td>
    13. <td>性别</td>
    14. <td>创建时间</td>
    15. <td>操作</td>
    16. </tr>
    17. ';
    18. foreach($data as $user)
    19. {
    20. $user['gender'] = $user['gender'] == 1 ?'男' : '女';
    21. $table.='<tr>';
    22. $table.='<td>'.$user['id'].'</td>';
    23. $table.='<td>'.$user['uname'].'</td>';
    24. $table.='<td>'.$user['gender'].'</td>';
    25. $table.='<td>'.date("Y-m-d H:m:s",$user['create_time']).'</td>';
    26. $table.='<td><button>删除</button>&nbsp;<button>编辑</button> </td>';
    27. $table.='</tr>';
    28. }
    29. $table .= '</table>';
    30. return $table;
    31. }
    32. }
    33. echo '<style>
    34. table {border-collapse: collapse; border: 1px solid;text-align: center; width: 500px;height: 150px;width: 600px;}
    35. caption {font-size: 1.2rem; margin-bottom: 10px;}
    36. tr:first-of-type { background-color:lightblue;}
    37. td,th {border: 1px solid; padding:5px}
    38. </style>';
    • Controller
      为Model和View搭建桥梁,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。
  1. <?php
  2. class Controller
  3. {
  4. protected $model;
  5. protected $view;
  6. // 将外部依赖的对象在构造方法中注入进来 完成外部对象在本类多个方法中的共享
  7. public function __construct(Model $model,View $view)
  8. {
  9. $this->model = $model;
  10. $this->view = $view;
  11. }
  12. public function index()
  13. {
  14. // 1. 获取数据
  15. $data = $this->model->getData();
  16. // 2. 渲染数据
  17. return $this->view->fetch($data);
  18. }
  19. public function edit()
  20. {
  21. $this->model->editData();
  22. }
  23. }
  24. $model = new Model;
  25. $view = new View;
  26. $c = new Controller($model,$view);
  27. echo $c->index();

人员信息

  • 你理解的容器与依赖注入?
    容器 container 依赖注入的类统一由容器进行管理,容器 数组 如果当前类依赖的对象很多, 可以将这些依赖的对象 , 类,闭包,放到一个”服务容器”中进行统一管理 bind make

  • 什么是facade门面, 有什么作用?
    facade 门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性。facade就是在服务容器和控制器之间加了一个中间层

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