php中的MVC模式运用
[size=5][color=Red]php中的MVC模式运用[/color][/size]
首先我来举个例子:
一个简单的文章显示系统
简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉及文章的发布,现在开始了。
由于只涉及数据库的读取,所以我定义了两个interface
Interface DataOperation
{
public function select($info);
public function selectNum($info);
}
上面这interface定义了读取数据的接口,select方法将返回所需要的文章。selectNum方法返回文章的总数,这是分页显示时用到的。$info是一个数组,用来存放查询条件
Interface DataSource
{
public static function getInstance();
}
这里我们假定我们操作的是数据库,DataSource定义一个接口,所有实现该接口的实例类将得到一个静态对象
Interface Controller
{
public function pop();
public function push();
public function execute();
}
Interface View
{
public function display();
}
好了,我们来实现.
下面定义一个类来实现DataSource接口,这个类运用了单例模式
class DataBaseSource implements DataSource
{
public static $instance = null;
public static function getInstance()
{
if(self::$instance == null)
{
self::$instance == new PDO("mysql:host=localhost;dbname=article","root","123456");
}
return self::$instance;
}
}
定义一个抽象类来实现DataOperation,我们要共享一个数据库连接,所以我在抽象类中将这个数据库对象初始化,这样,所有的子类都能共享这个对象
abstract class DataBaseOperation implements DataOperation
{
protected $db = null;
public function __construct()
{
$this->db = DataBaseSource::getInstance();
}
public function select($info);
public function select($info);
}
下面我来写一个业务子类来实现抽象类DataBaseOperation
class Tech extends DataBaseOperation
{
public function select($info)
{
//在这里实现你的代码
}
public function selectNum($info)
{
//在这里实现你的代码
}
}
业务逻辑层我们实现了,下面是控制层
class ViewController implements Controller
{
private $mod = array();
public function push($key,$value);
{
//实现你的代码,将类注册进$this->mod;
}
public function pop($key)
{
//实现你的代码,将$this->mod[$key]值为null;
}
public function execute($key)
{
//在这里实现你的代码,生成实例.注意利用php5新的特性,异常的处理
}
}
好了,下面是表现层,这里将实现Interface View
abstract ArticleView implements View
{
protected $smarty = null;
public function __construct()
{
$this->smarty = new Smarty();
///下面你可以定义smarty的一些属性值
}
}
具体的页面,例如科技文章的显示页面
class TechArticleView extends ArticleView
{
public function display()
{
//实现你的代码,调用Tech类和更多的DataBaseOperation子类
}
}
好了,下面是总入口 index.php
try
{
$viewController = new ViewController();
$viewController->push("tech",TechArticleView);
//持续的增加
$mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"];
//最后
$viewController->execute($key);
}
catch(Exception $e)
{
//如何处理异常就是你的事了
}
转载于:https://www.cnblogs.com/yibaidian/p/4108444.html
php中的MVC模式运用相关推荐
- PHP如何用mvc,在PHP中使用MVC模式进行开发
1 ,软件结构发展过程中的3个阶段: Model1模式 , Model2模式 , MVC模式 1>Model1最重要的特点就是没有分层的概念 , 也就是说把界面 和业务逻辑的处理放在一个文件中来 ...
- FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式
理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP. 什么叫做设计模式? 简单来说,设计模式(Pattern)就是解决某一类问题的特定方法.由于这种特 ...
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第43讲:PHP程序设计中的MVC模式
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第43讲:PHP程序设计中的MVC模式 模型(M)-视图(V)-控制器(C)mvc是一种软件设计模式,通过MVC思想进行实例开发和程序设计. 在前面的 ...
- WinForm中的MVC模式--MVP模式
本文主要介绍MVC模式在WINFORM中的实现,其实砖家们都称它为MVP模式,小弟E文不太好,真的是记不住那个P怎么拼写的.. MVC模式主要解决的问题就是将表示层和业务层进行分离,在以往做WINFO ...
- 设计模式中,MVC模式与MVT模式的区别
1.MVC模式 有一种程序设计模式叫MVC,其核心思想是分工.解耦,让不同的代码块之间降低耦合,增强代码的 可扩展性和可移植性,实现向后兼容. MVC的全拼为Model-View-Controller ...
- HTML5开发中使用MVC模式
公司上周举办了一次编程马拉松,时间为两天,我当然用了lufylegend.js,为了让代码看起来更整洁一些,尝试着用javascript写了一个小的MVC框架,并开发了一个简单的demo,由于时间太短 ...
- 谈 三层结构与MVC模式的区别
谈 三层结构与MVC模式的区别 在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题. 那么我也来讲讲我对这两者的理解吧. ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
- 浅析三层架构与MVC模式的区别
浅析三层架构与MVC模式的区别 三层架构介绍: (点击链接即可见三层架构) MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(co ...
最新文章
- 二叉树结点地址小错误
- 30岁自学python找工作-程序员自学Python开发,20到30岁几乎决定了你的未来!
- 把工程部署在tomcat的root路径下
- mysql xtrabackup备份工具使用
- js粘贴板为什么获取不到图片信息_JavaScript 学习笔记(3):图片库
- flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?
- python基础入门大作业怎么做_【百度飞桨】零基础Python课程大作业
- buffsize 缓冲区的大小多少合适_对于Redis性能指标监控!你了解多少?
- 初识 npm script : 用 npm init 快速创建项目
- java每轮排序结果_【算法队列面试题】面试问题:java选择题… - 看准网
- Mysql数据库分库和分表方式(常用)
- 【抠图工具】图片、视频自动抠图(VideoMatting)
- 2021-05-11
- 电工学复习【7】-- 集成运算放大器
- android x86 win8 双系统,win8.1安卓双系统安装教程:安卓win8.1二合一双系统安装步骤...
- 2022国内TMS运输管理系统排行榜
- Anchor-based 与 Anchor-free
- w7怎么修改计算机用户名,教您电脑用户名怎么修改
- 直流无刷电机及Matlab/Simulink驱动仿真
- c语言中哪个键是逐行运行的,c语言中的快捷键有哪些?
热门文章
- 网络营销——网络营销专员如何做好网站外链优化工作?
- 网站建设不曾止步,持续优化才有未来!
- Linux内核链表交换节点,[笔记]Linux内核链表:结点的插入、删除以及链表的遍历...
- map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...
- android悬浮窗按钮在哪,android——悬浮窗控件Toast
- 服务器跑python程序_远程编写+调试服务器上的Python程序
- python函数概述_Python概述
- sdi线缆标准_Roland V1SDI——专业、便携、高性价比的SDI摄像机直播解决方案
- 开发日记-20190902 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 7
- 开发日记-20190522 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》