最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php中的MVC模式運(yùn)用技巧

 更新時(shí)間:2007年05月03日 00:00:00   作者:  
php中的MVC模式運(yùn)用
首先我來舉個(gè)例子:
一個(gè)簡單的文章顯示系統(tǒng)
簡單期間,我們假定這個(gè)文章系統(tǒng)是只讀的,也就是說這個(gè)例子將不涉及文章的發(fā)布,現(xiàn)在開始了。
由于只涉及數(shù)據(jù)庫的讀取,所以我定義了兩個(gè)interface


Interface DataOperation
{
   public function select($info);
   public function selectNum($info);
}


上面這interface定義了讀取數(shù)據(jù)的接口,select方法將返回所需要的文章。selectNum方法返回文章的總數(shù),這是分頁顯示時(shí)用到的。$info是一個(gè)數(shù)組,用來存放查詢條件


Interface DataSource
{
   public static function getInstance();
}

這里我們假定我們操作的是數(shù)據(jù)庫,DataSource定義一個(gè)接口,所有實(shí)現(xiàn)該接口的實(shí)例類將得到一個(gè)靜態(tài)對象


Interface Controller
{
   public function pop();
   public function push();
   public function execute();
}
Interface View
{
   public function display();
}



好了,我們來實(shí)現(xiàn).
下面定義一個(gè)類來實(shí)現(xiàn)DataSource接口,這個(gè)類運(yùn)用了單例模式


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;
   }
}


定義一個(gè)抽象類來實(shí)現(xiàn)DataOperation,我們要共享一個(gè)數(shù)據(jù)庫連接,所以我在抽象類中將這個(gè)數(shù)據(jù)庫對象初始化,這樣,所有的子類都能共享這個(gè)對象


abstract class DataBaseOperation implements DataOperation
{
   protected $db = null; 
   public function __construct()
   {
       $this->db = DataBaseSource::getInstance();
   }
   public function select($info);
}


下面我來寫一個(gè)業(yè)務(wù)子類來實(shí)現(xiàn)抽象類DataBaseOperation


class Tech extends DataBaseOperation
{
   public function select($info)
   {
       //在這里實(shí)現(xiàn)你的代碼
   }
   public function selectNum($info)
   {
       //在這里實(shí)現(xiàn)你的代碼
   }
}


業(yè)務(wù)邏輯層我們實(shí)現(xiàn)了,下面是控制層


class ViewController implements Controller
{
   private $mod = array();
   public function push($key,$value);
   {
       //實(shí)現(xiàn)你的代碼,將類注冊進(jìn)$this->mod;
   }
   public function pop($key)
   {        
       //實(shí)現(xiàn)你的代碼,將$this->mod[$key]值為null;
   }
   public function execute($key)
   {
       //在這里實(shí)現(xiàn)你的代碼,生成實(shí)例.注意利用php5新的特性,異常的處理
   }
}
好了,下面是表現(xiàn)層,這里將實(shí)現(xiàn)Interface View
abstract ArticleView implements View
{
   protected $smarty = null;
   public function __construct()
   {
       $this->smarty = new Smarty();
       ///下面你可以定義smarty的一些屬性值
   }
}
具體的頁面,例如科技文章的顯示頁面
class TechArticleView extends ArticleView
{
   public function display()
   {
       //實(shí)現(xiàn)你的代碼,調(diào)用Tech類和更多的DataBaseOperation子類
   }
}
好了,下面是總?cè)肟?nbsp; index.php
try
{
   $viewController = new ViewController();
   $viewController->push("tech",TechArticleView);  
//持續(xù)的增加  
   $mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"];
   //最后
   $viewController->execute($key);
}
catch(Exception $e)
{
       //如何處理異常就是你的事了
}

相關(guān)文章

  • php使用PDO獲取結(jié)果集的方法

    php使用PDO獲取結(jié)果集的方法

    這篇文章主要介紹了php使用PDO獲取結(jié)果集的方法,結(jié)合實(shí)例形式分析了PDO獲取結(jié)果集的常用函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2017-02-02
  • PHP 生成的XML以FLASH獲取為亂碼終極解決

    PHP 生成的XML以FLASH獲取為亂碼終極解決

    最不怕跟匪夷所思的問題作斗爭了,看誰牛鼻。都好久沒在編碼上遇到過障礙了,今天居然又遇到個(gè)小茶包——PHP生成的XML,以FLASH獲取卻為亂碼。
    2009-08-08
  • 具有時(shí)效性的php加密解密函數(shù)代碼

    具有時(shí)效性的php加密解密函數(shù)代碼

    該函數(shù)具有時(shí)效性,只要過期就不能解密!通過時(shí)間動態(tài)加密 加密后數(shù)據(jù)多樣化,增加破解難度
    2013-06-06
  • HTML中嵌入PHP的簡單方法

    HTML中嵌入PHP的簡單方法

    這篇文章主要為大家詳細(xì)介紹了HTML中嵌入PHP的簡單方法,以一個(gè)實(shí)例實(shí)現(xiàn)php嵌入到html中,感興趣的小伙伴們可以參考一下
    2016-02-02
  • PHP封裝的多文件上傳類實(shí)例與用法詳解

    PHP封裝的多文件上傳類實(shí)例與用法詳解

    這篇文章主要介紹了PHP封裝的多文件上傳類實(shí)例與用法,結(jié)合實(shí)例形式詳細(xì)分析了php多文件上傳類的定義與具體使用方法,需要的朋友可以參考下
    2017-02-02
  • 如何解決PHPExcel不兼容php7.4版本

    如何解決PHPExcel不兼容php7.4版本

    這篇文章主要為大家介紹了如何解決PHPExcel不兼容php7.4版本問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • php添加文章時(shí)生成靜態(tài)HTML文章的實(shí)現(xiàn)代碼

    php添加文章時(shí)生成靜態(tài)HTML文章的實(shí)現(xiàn)代碼

    PHP生成靜態(tài)文章HTML,有批量的生成,但比較標(biāo)準(zhǔn)的應(yīng)該是在添加文章時(shí)就生成HTML文章,編輯時(shí)再重新生成HTML文章,刪除文章時(shí)同樣也樣刪除多余出來的HTML文章,這時(shí)批量生成就顯得有點(diǎn)力不從心了,下面就介紹一下PHP在添加文章時(shí)如何生成靜態(tài)的HTML文件
    2013-02-02
  • PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法

    PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法

    這篇文章主要介紹了PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法,結(jié)合實(shí)例形式分析了PHP+MySQL事務(wù)處理相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • PHP7原生MySQL數(shù)據(jù)庫操作實(shí)現(xiàn)代碼

    PHP7原生MySQL數(shù)據(jù)庫操作實(shí)現(xiàn)代碼

    php7已經(jīng)沒有mysql這個(gè)擴(kuò)展了,好多貼還是按照以前的方法講,讓我這個(gè)新手來回找了好多遍都沒找到mysql,php7用后面兩個(gè)鏈接數(shù)據(jù)庫,千萬不要傻傻去找也不要去來回拷貝什么dll之類的
    2020-07-07
  • ThinkPHP跳轉(zhuǎn)頁success及error模板實(shí)例教程

    ThinkPHP跳轉(zhuǎn)頁success及error模板實(shí)例教程

    這篇文章主要介紹了ThinkPHP跳轉(zhuǎn)頁success及error模板實(shí)例教程,可以幫助初學(xué)者進(jìn)一步熟悉ThinkPHP的頁面跳轉(zhuǎn)流程,需要的朋友可以參考下
    2014-07-07

最新評論

兴安盟| 德昌县| 正定县| 民乐县| 息烽县| 扎囊县| 宣汉县| 清水河县| 锦屏县| 阿鲁科尔沁旗| 石楼县| 乌鲁木齐县| 东港市| 宝山区| 漳浦县| 临清市| 甘谷县| 抚州市| 酒泉市| 余江县| 东至县| 来安县| 咸丰县| 康保县| 旬邑县| 紫金县| 巴林左旗| 宁蒗| 佛山市| 土默特左旗| 石门县| 富裕县| 个旧市| 弋阳县| 元江| 淮安市| 巴中市| 万年县| 盐边县| 吉木乃县| 什邡市|