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就是在服务容器和控制器之间加了一个中间层

更多相关文章

  1. MVC架构模式,依赖注入,对象容器与门面技术
  2. 「Spring认证」Spring IoC 容器
  3. flex 容器和项目 常用属性
  4. 实例演示flex容器和项目属性设置
  5. 实例演示flex容器与项目中常用的属性
  6. flex容器以及属性
  7. flex容器与项目中常用的属性
  8. flex布局中容器及项目常用属性演示
  9. flex容器与项目的认识和常用属性

随机推荐

  1. Android开发中Android与网页(JavaScrip)t的
  2. Android 实现 选择文件对话框
  3. Android Studio 报错小记
  4. 6.1.5 GridView详解
  5. 设置Android程序的默认安装位置
  6. Android 手机震动 设置震动时间
  7. TabActivity的使用遇到的问题
  8. Android中使用TagFlowLayout制作动态添加
  9. Android(安卓)常用布局及基本UI控件
  10. Android 自定义标题栏Title Bar