對於一個完整的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)簡單的加載已經完成!