Blogger Information
Blog 34
fans 0
comment 0
visits 26623
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MVC设计模式+数据库连接单例类
罗盼的博客
Original
835 people have browsed it

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 '查询出错'; 
        }

    }
    
    
}

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例



Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments