php框架練習
框架的作用:功能:操作數據庫 模版引擎smarty
分析,應該具備什麼功能?
a:具體配置文件 ,配置文件的讀取功能
b:數據庫處理類
c:目錄結構
先建一個includes文件放入,配置文件(config.php),配置類(conf.class.php),mysql數據庫處理類(mysql.class.php),網站初始化文件(init.php)
config.php 文件:
//網站的配置文件 $_cfg=array(); $_cfg['host']='localhost'; $_cfg['user']='root'; $_cfg['pwd']='root'; $_cfg['db']='xxzdb'; $_cfg['char']='utf8'; //$_cfg['']=''; //$_cfg['']='';
conf.class.php
//配置文件的讀取類 //作用:讀取config.php 並能返回某個配置選項的值 class Conf{ private static $ins = false; private $info = array(); final protected function __construct(){ require(ROOT .'includes/config.php'); $this->info = $_cfg; } //單例 public static function getIns(){ if(self::$ins === false){ self::$ins = new self(); } return self::$ins; } //讀取配置文件的信息 public function __get($key){ if(array_key_exists($key,$this->info)){ return $this->info[$key]; } else { return null; } } public function __set($key,$value){ $this->info[$key] = $value; } //測試方法 public function printc(){ print_r($this->info); } } //調用 /* $conf = Conf::getIns(); $conf->template_dir='d:/www'; echo $conf->printc(); */
mysql.class.php
//require('conf.class.php'); //數據庫的處理類 //抽象類 沒有方法體 abstract class abs_db{ abstract protected function connect(); abstract protected function select_db($dbname=''); abstract protected function setChar(); abstract protected function query($sql); abstract protected function getAll($sql); abstract protected function getRow($sql); abstract protected function getOne($sql); abstract protected function error(); } class Mysql extends abs_db{ private static $ins = false; private $conn = false; private $conf = false; protected function __construct(){ $this->conf = Conf::getIns(); $this->connect(); $this->select_db(); $this->setChar(); } public static function getIns(){ if(self::$ins === false){ self::$ins= new self(); } return self::$ins; } //創建連接 protected function connect(){ $this->conn = mysql_connect($this->conf->host,$this->conf->user,$this->conf->pwd); if(!$this->conn){ $err = new Exception('連接失敗'); throw $err; } } //選擇數據庫 protected function select_db($dbname=''){ if($dbname == ''){ $sql='use '.$this->conf->db; $this->query($sql); } } //設置字符集 protected function setChar(){ $sql='set names '.$this->conf->char; $this->query($sql); } //執行sql語句 public function query($sql){ return mysql_query($sql,$this->conn); } //取回所有行 public function getAll($sql){ $rs = $this->query($sql); $list=array(); while($row = mysql_fetch_assoc($rs)){ $list[] = $row; } return $list; } //取回一行 public function getRow($sql){ $rs = $this->query($sql); return mysql_fetch_assoc($rs); } public function getOne($sql){ } public function error(){ print_r(mysql_error($this->conn)); } //關閉資源 public function __destruct(){ } } /* $db = Mysql::getIns(); print_r($db); $sql="select * from art limit 5"; print_r($db->getAll($sql)); */
init.php
//網站的初始化文件 /** 魔術方法 __FILE__ 當前絕對路徑 文件作用: 負責當前網站的根目錄 引入所以頁麵都需要的文件 */ //ROOT 代表網站的跟路徑 define('ROOT',str_replace('\\','/',str_replace('includes\init.php','',__FILE__))); require(ROOT .'includes/conf.class.php'); require(ROOT .'includes/mysql.class.php'); //echo ROOT;
最後更新:2017-04-02 22:15:46