多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP学习MVC留言本实例

时间:2017-04-25 16:17:58 [来源]:郑州PHP培训学校

  PHP学习MVC留言本实例
  MVC的开发实例相信很多朋友在找这类的教材(包括我),到底要怎么去学习MVC这个开发模式呢。
  又要如何去适应这种模式呢。
  MVC给我们带来了什么的好处,PHP开发MVC又要注意什么呢。
  标题上我把这个留言板叫最简单的,其实应该叫最简陋的,因为把全部注意力集中在MVC模式设计和实现上,所以UI方面几乎没有一点修饰。之所以在这里跟大家分享这个东西,是因为我自己通过读该老外的代码并仿照着写留言板对MVC的概念和具体实现有了些认识,希望了解MVC具体实现的朋友可以参考一下。
  首先通俗地说说我对MVC的理解:Model是负责干活的,它干的活主要是从数据库中获取需要的数据以及对获取的数据按照业务逻辑进行加工处理,至于为什么要干某件活,何时干某件活它一概不管,而这正是Controller的职责,Controller像个餐馆招待,接到食客的需求,马上传达给厨房,Model就是大厨。View负责最终把菜端上桌,摆在合适的位置上。比如说客人来了要了个糖醋鲤鱼,接待客人的是Controller,它会通知Model做一道糖醋鲤鱼,做好之后它又会招呼View把菜端上桌,View知道这是主菜,它会把它摆在桌子中央。MVC的最大优势就在于把数据处理、流程控制和UI显示较好地分离开来,便于程序的开发和维护。
  好了,下面看具体实现。
  这个小程序一共包含6个文件,其中index.php是程序入口、post.htm是留言表单、在lib文件夹里Model、View 、Controller三个文件分别实现MVC,DataAccess是一个简单的数据库访问类。
  [php]
  <?php
  /**
  * 一个用来访问MySQL的类
  * 仅仅实现演示所需的基本功能,没有容错等
  * 代码未作修改,只是把注释翻译一下,加了点自己的体会*/
  class DataAccess {
  var $link_id; //用于存储数据库连接
  var $query_id; //用于存储查询源
  //! 构造函数.
  /**
  * 创建一个新的DataAccess对象
  * @param $host 数据库服务器名称
  * @param $user 数据库服务器用户名
  * @param $pass 密码
  * @param $db 数据库名称
  */
  function __construct($host,$user,$pass,$db) {$this->link_id=mysql_pconnect($host,$user,$pass); //连接数据库服务器mysql_select_db($db,$this->link_id); //选择所需数据库mysql_query("set names utf8;");
  }
  //! 执行SQL语句
  /**
  * 执行SQL语句,获取一个查询源并存储在数据成员$query中* @param $sql 被执行的SQL语句字符串
  * @return void
  */
  function query($sql) {
  $this->query_id=mysql_unbuffered_query($sql,$this->link_id); // Perform query hereif ($this->query_id) return true;
  else return false;
  }
  //! 获取结果集
  /**
  * 以数组形式返回查询结果的所有记录
  * @return mixed
  */
  function fetchRows($sql) {
  $this->query($sql);
  $arr=array();
  $i=0;
  while( $row=mysql_fetch_array($this->query_id,MYSQL_ASSOC) )//MYSQL_ASSOC参数决定了数组键名用字段名表示{ $arr[$i]=$row;
  $i++;
  }
  return $arr;
  }
  }
  ?>
  [/php]
  下面再来介绍一下Model类。
  这个类也很简单,里面的函数一看就知道,是针对各种数据操作的,它通过DataAccess访问数据库。
  [php]
  <?php
  //! Model类
  /**
  * 它的主要部分是对应于留言本各种数据操作的函数* 如:留言数据的显示、插入、删除等
  */
  class Model {
  var $dao; //DataAccess类的一个实例(对象)//! 构造函数
  /**
  * 构造一个新的Model对象
  * @param $dao是一个DataAccess对象
  * 该参数以地址传递(&$dao)的形式传给Model* 并保存在Model的成员变量$this->dao中
  * Model通过调用$this->dao的fetch方法执行所需的SQL语句*/
  function __construct(&$dao) {
  $this->dao=$dao;
  }
 

上一篇:php中匿名函数的使用

下一篇:如何用PHP生成HTML页面