Correction status:qualified
Teacher's comments:
1.入口文件.index.php
<?php /*单例类:允许且仅被实例化一次的类,该类多次应用但是是同一个对象, 且该对象不允许被克隆,自身实例化,自身返回该类对象 注:因为php中的单例和java asp.net ios等不一样,php中所有的全局变量和 静态成员在被解释执行后都会被收回,不像java asp.net ios的单例会存在整个 应用程序的生命周期内,所以php单例类适用于单个页面多次调用同一个对象 */ /* MVC设计模式是v是视图层展示用户界面,m是模型层处理数据,c是控制层, 控制m和v同步,取出m模型层传送数据对v进行渲染 */ require './control/control.php'; $control = new control; $control->index(); ?>
点击 "运行实例" 按钮查看在线实例
2.控制器文件control.php
<?php require './Model/model.php';//加载模型 require '/View/view.php';//加载视图 class control { public function index() { //获取模型数据 $model =model::getInstace(); $result = $model->select(' userinfo ',' id,account,head ',' id>0 ',' ',' '); //渲染视图 $view = new view(); print $view->display($result); } } ?>
点击 "运行实例" 按钮查看在线实例
3.视图文件view.php
<?php class view { public $html; private $data; public function display($data=array()){ $this->html ='<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html" /> <title>用户信息表</title> </head> <body> '; $this->html.='<table width=30% align="center" cellpadding="5px" border="1px soilds" cellspacing="0" >'; $this->html.='<caption style="margin-left:20px;margin-bottom:20px;font-size:1.5em;">用户信息</caption>'; $this->html.='<tr style="text-align:center;background-color: lightblue"> <td>用户ID</td> <td>用户名</td> <td>用户级别</td>'; foreach($data as $v){ $this->html.='<tr style="text-align:center"> <td>'.$v['id'].'</td> <td>'.$v['account'].'</td> <td>'.$v['head'].'</td>'; } $this->html.='</table>'; $this->html.= '</body></html>'; return $this->html; } } ?>
点击 "运行实例" 按钮查看在线实例
4.模型文件model.php
<?php //数据库单例模型 class model { private $type = 'mysql';//数据库类型 private $host = '127.0.0.1';//数据库主机 private $user = 'root';//数据库用户名 private $pass = 'root';//数据库密码 private $name = 'test';//数据库名 private $char= 'utf8';//数据库字符集 private static $instace;//实例对象 private $pdo= null;//PDO对象 private $result= null;//执行结果 //构造方法私有,禁止外部改变 private function __construct() { /*PDO连接数据库*/ $dsn = $this->type.':host='.$this->host.';dbname='.$this->name; try{ //设置数据库字符集 $set_char = array(PDO::ATTR_PERSISTENT=>true,PDO::ATTR_ERRMODE=>2,PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8'); //连接数据库 $this->pdo = new PDO($dsn,$this->user,$this->pass,$set_char); }catch(PDOException $e){ //捕捉错误信息 die('连接失败:'.$e->getMessage()); } } //防止克隆 private function __clone() {} //实例化 public static function getInstace(){ if((self::$instace instanceof self) == false){//检测当前对象是否已经创建且属于当前实例 self::$instace =new self(); } return self::$instace; } //查询语句 public function select($table,$filed = '*',$where=' ',$orderBy = ' ',$limit = ' '){ $sql = " SELECT $filed FROM $table WHERE $where $orderBy $limit"; $stmt=$this->pdo->prepare($sql); if($stmt->execute()){ $this->result = $stmt->fetchAll(); return $this->result; }else{ echo '查询出错'; } } } ?>
点击 "运行实例" 按钮查看在线实例