淺談MVC之模型(M)->視圖(V)->控制器(C)的加載

對於一個完整的MVC框架來說怎麼可以沒有模型(M)->視圖(V)->控制器(C)呢?所以我們今天的任務就是在原來的基礎上將模型、視圖、控制器加載進我們自己封裝的框架中。
好廢話不多說,爲了方便大家的理解我先把我的目錄結構向大家展示一下:
這裏寫圖片描述
好咱們先從模型(M)開始:
模型所在位置如圖中所示是:./core/lib/model.php

<?php 
  namespace core\lib;
  //這裏是後續配置文件寫好以後引入的配置
  use core\lib\conf;
   class model extends \PDO
   {
      public function __construct()
      {
         //這裏是數據庫配置項在後續的開發中我們會用到
         $database = conf::all('database');

        try
        {
            parent::__construct($database['DSN'], $database['USERNAME'], $database['PASSWD']);
        }catch(\PDOException $e)
        {
            p($e->getMessage());
        }
      }
   }
?>

通過上面的程序中我們不難看出模型(M)層的主要作用是進行一些比較複雜的邏輯運算。對於一些簡單的處理爲了方便我們都會直接在控制器(C)層直接處理。
接下來應該是視圖(V)層:
視圖所在位置如圖中所示是:./app/view/index.html
測試代碼爲:

<h1>這是視圖文件</h1>

<h3><?php echo $data ?></h3>

視圖(V)層就是將數據以視圖的形式展示出來
最後的就是控制器(C)層了:
控制器所在位置如圖中所示是:./app/ctrl/indexCtrl.php

<?php 
  namespace app\ctrl;
  class indexCtrl extends \core\zl
  {
    public function index()
    {

        // $model = new \core\lib\model();
        // //數據庫操作
        // $sql = 'select * from documents';
        // $re=$model->query($sql);
        // p($re->fetchall());
      // $temp = \core\lib\conf::get('CTRL','route');
      // $temp = \core\lib\conf::get('ACTION','route'); 
      // P($temp); 
      $temp=new \core\lib\model();
      $data = 'Hello World';
        $this->assign('data',$data);
        $this->display('index.html');
    }
  } 
?>

當然在我們的基類中也要做出修改
我們只需要在原來的基礎上加上

 public function assign($name,$value)
     { 
        //p($value);
       $this->assign[$name] = $value;
     }

     public function display($file)
     {
         $file = APP.'/view/'.$file;
         //p($file);
         if(is_file($file))
         {   
            //p($file);
            extract($this->assign);
            include $file;
         }
     }

就OK了!
好到目前爲止我們的MVC模型(M)->視圖(V)->控制器(C)簡單的加載已經完成!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章