php中的MVC模式運用

來源:互聯網
上載者:User

標籤:io   ar   color   os   sp   資料   on   art   cti   

[size=5][color=Red]php中的MVC模式運用[/color][/size] 
首先我來舉個例子: 
一個簡單的文章顯示系統 
簡單期間,我們假定這個文章系統是唯讀,也就是說這個例子將不涉及文章的發布,現在開始了。 
由於只涉及資料庫的讀取,所以我定義了兩個interface 

Interface DataOperation 
{ 
    public function select($info); 
    public function selectNum($info); 
} 
上面這interface定義了讀取資料的介面,select方法將返回所需要的文章。selectNum方法返迴文章的總數,這是分頁顯示時用到的。$info是一個數組,用來存放查詢條件 
Interface DataSource 
{ 
    public static function getInstance(); 
} 
這裡我們假定我們操作的是資料庫,DataSource定義一個介面,所有實現該介面的執行個體類將得到一個靜態對象 
Interface Controller 
{ 
    public function pop(); 
    public function push(); 
    public function execute(); 
} 
Interface View 
{ 
    public function display(); 
} 
好了,我們來實現. 
下面定義一個類來實現DataSource介面,這個類運用了單例模式 
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; 
    } 
} 
定義一個抽象類別來實現DataOperation,我們要共用一個資料庫連接,所以我在抽象類別中將這個資料庫物件初始化,這樣,所有的子類都能共用這個對象 
abstract class DataBaseOperation implements DataOperation 
{ 
    protected $db = null;  
    public function __construct() 
    { 
        $this->db = DataBaseSource::getInstance(); 
    } 
    public function select($info); 
    public function select($info); 
} 
下面我來寫一個業務子類來實現抽象類別DataBaseOperation 
class Tech extends DataBaseOperation 
{ 
    public function select($info) 
    { 
        //在這裡實現你的代碼 
    } 
    public function selectNum($info) 
    { 
        //在這裡實現你的代碼 
    } 
} 
商務邏輯層我們實現了,下面是控制層 
class ViewController implements Controller 
{ 
    private $mod = array(); 
    public function push($key,$value); 
    { 
        //實現你的代碼,將類註冊進$this->mod; 
    } 
    public function pop($key) 
    {         
        //實現你的代碼,將$this->mod[$key]值為null; 
    } 
    public function execute($key) 
    { 
        //在這裡實現你的代碼,產生執行個體.注意利用php5新的特性,異常的處理 
    } 
} 
好了,下面是表現層,這裡將實現Interface View 
abstract ArticleView implements View 
{ 
    protected $smarty = null; 
    public function __construct() 
    { 
        $this->smarty = new Smarty(); 
        ///下面你可以定義smarty的一些屬性值 
    } 
} 
具體的頁面,例如科技文章的顯示頁面 
class TechArticleView extends ArticleView 
{ 
    public function display() 
    { 
        //實現你的代碼,調用Tech類和更多的DataBaseOperation子類 
    } 
} 
好了,下面是總入口  index.php 
try 
{ 
    $viewController = new ViewController(); 
    $viewController->push("tech",TechArticleView);   
//持續的增加   
    $mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"]; 
    //最後 
    $viewController->execute($key); 
} 
catch(Exception $e) 
{ 
        //如何處理異常就是你的事了 
}

php中的MVC模式運用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.