博主信息
月光下,遗忘黑暗
博文
41
粉丝
1
评论
0
访问量
5721
积分:0
P豆:83

php之mvc架构思想

2021年05月20日 12:06:56阅读数:112博客 / 月光下,遗忘黑暗
  • facade门面
    外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
    作用:
    1、它对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便
    2、实现了子系统与客户之间的松耦合关系
    3、如果应用需要,它并不限制它们使用子系统类。因此可以在系统易用性与能用性之间加以选择
  • 容器与依赖注入
    当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合。这个时候解决方式是,A类应该去依赖B类的接口,把具体的类的实例化交给外部。
  • MVC架构
    m:model模型层
    v:view视图层
    c:controller控制器层

model层

  1. <?php
  2. namespace mvc_demo;
  3. use PDO;
  4. class Model
  5. {
  6. //获取数据
  7. public function getData()
  8. {
  9. return (new PDO('mysql:host=localhost;dbname=phpedu','root','zhoujielun521'))->query("SELECT `id`,`uname`,`gender` FROM `users` ORDER BY `id` asc LIMIT 0,10")->fetchAll(PDO::FETCH_ASSOC);
  10. }
  11. }
  12. // print_r((new Model)->getData());

视图层

  1. <?php
  2. namespace mvc_demo;
  3. class View {
  4. public function fetch($data)
  5. {
  6. $table = '<table>';
  7. $table.='<caption>用户信息表</caption>';
  8. $table.= '<tr><th>编号</th><th>姓名</th><th>性别</th></tr>';
  9. foreach($data as $user)
  10. {
  11. $user['gender'] = $user['gender'] == 1 ?'男' : '女';
  12. $table.='<tr>';
  13. $table.='<td>'.$user['id'].'</td>';
  14. $table.='<td>'.$user['uname'].'</td>';
  15. $table.='<td>'.$user['gender'].'</td>';
  16. $table.='</tr>';
  17. }
  18. $table .= '</table>';
  19. return $table;
  20. }
  21. }
  22. echo '<style>
  23. table {border-collapse: collapse; border: 1px solid;text-align: center; width: 500px;height: 150px;width: 600px;}
  24. caption {font-size: 1.2rem; margin-bottom: 10px;}
  25. tr:first-of-type { background-color:lightblue;}
  26. td,th {border: 1px solid; padding:5px}
  27. </style>';
  28. // require 'Model.php';
  29. // $data = (new Model)->getData();
  30. // echo (new View)->fetch($data);

控制器层

  1. <?php
  2. namespace mvc_demo;
  3. //中间桥梁 控制器
  4. require 'Model.php';
  5. require 'View.php';
  6. // class Controller
  7. // {
  8. // //将依赖的外部对象 在操作方法中注入
  9. // public function index(Model $model,View $view){
  10. // // 1.获取数据
  11. // $data = $model->getData();
  12. // //2. 模板渲染
  13. // return $view->fetch($data);
  14. // }
  15. // public function edit(Model $model){
  16. // }
  17. // }
  18. class Controller {
  19. protected $model;
  20. protected $view;
  21. //通过构造方法将外部对象初始化,实现了外部依赖注入的对象在类内部的共享/复用
  22. public function __construct(Model $model, View $view)
  23. {
  24. $this->model = $model;
  25. $this->view = $view;
  26. }
  27. public function index(Model $model,View $view){
  28. // 1.获取数据
  29. $data = $this->model->getData();
  30. //2. 模板渲染
  31. return $this->view->fetch($data);
  32. }
  33. public function edit()
  34. {
  35. $this->model->editData();
  36. }
  37. }
  38. //客户端
  39. $model = new Model();
  40. $view = new View();
  41. $ctrl = new Controller($model,$view);
  42. // ECHO $ctrl->index($model,$view);
  43. echo call_user_func_array([$ctrl,'index'],[$model,$view]);
批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 事件溯源是领域驱动设计设计中的模式一。领域驱动设计是面向业务的一种建模方式。它帮助开发者建立更贴近业务的模型。今天我们就来聊聊php中的事件溯源。
    如何使用OOP的来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发都是非常有意义的。
    vue.js是前端框,是一个前端js框,是一套建用户界面的渐进式框;它是以数据驱动和组件化的建的,采用自底向上增量开发的设计。
    Yii是MVC模式,可以从Yii的目录结和代码中,看出Yii是采用MVC模式,Yii是一个基于组件的高性能PHP,用于开发大型Web应用,并且采用严格的OOP编写,并有着完善的库引用以及全面的教程
    github的地址:https://github.com/yxgg/-frame你可以照着这路先在脑海里下,然后看看源代码,在自己模仿着写(哈哈大家不都是从模仿到会做嘛儿)出发点:我个人理解自己开发框也是锻炼原生的一种手段
    本篇文章我们来讲讲PHP四大框的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP去完成项目,废话不多说,我们一起来看看吧!! 

    2021-03-11

    764

    Chrome在设计术语中的意是“框”,即浏览器除了网页内容外的其他部分;而字面意是“铬”,一种常用于汽车部件的金属元素,能让人联到速度很快的汽车,正好符合浏览器响应速度快的特性。
    下面由Laravel教程栏目给大家介绍利用组件开发与composer建类Laravel框,希望对需要的朋友有所帮助!如今“敏捷开发”“不要重复造轮子”已经在软件开发方面盛行了。
    实际上,控制反转是一个比较笼统的设计,并不是一种具体的实现方法,一般用来指导框层面的设计。
    体系结是程序员所看到的计算机的属性,即计算机的逻辑结和功能特征,包括其各个硬部件和软部件间的相互关系;对计算机系统设计者,计算机体系结是指研究计算机的基本设计和由此产生的逻辑结,对程序设计者是指对系统的功能描述
    php开发培训哪个好?PHP作为如今最火热的web开发语言一,越来越多的朋友要培训PHP,掌握一技长,但是市面上那么多PHP培训​机,我们该怎么选择呢?其实大家也不必过于纠结!
    php mysql的意是一种PHP是一种易于学习和使用的后台开发技术,用户只需具备很少的编程知识,就可以使用PHP建立一个具有交互功能的Web站点,PHP最大的特色是简单并与MySQL天生的结合性