想用MVC的方式寫一個小的CMS,建立了Controller、Model、View,但是不知道Controller向view傳值該怎麼寫?
index.php
<code><?php require('View/testView.php'); require('Model/testModel.class.php'); require('Controller/testController.class.php'); $testController = new testController(); $testController->show(); ?> </code>登入後複製登入後複製testController.class.php
<code>class testController{ function show(){ $testModel = new testModel(); $data = $testModel->get(); return $data; } } </code>
testModel.class.php
<code>require('database.php'); get_connection(); class testModel{ function get(){ $sql = "SELECT * FROM db_problem"; $res = mysql_query($sql); return $res; } } </code>
testView.php
<code><html> <head> <meta charset="UTF-8"> <title>BUG列表</title> </head> <body> <table border="1px solid #bebebe" width="980px" cellpadding="1" cellspacing="0"> <tr> <th width="10%">ID</th> <th width="70%">问题</th> <th width="20%">提交时间</th> </tr> <tr style="text-align: center"> <td></td> <td></td> <td></td> </tr> </table> </body> </html> </code>
想用MVC的方式寫一個小的CMS,建立了Controller、Model、View,但是不知道Controller向view傳值該怎麼寫?
index.php
<code><?php require('View/testView.php'); require('Model/testModel.class.php'); require('Controller/testController.class.php'); $testController = new testController(); $testController->show(); ?> </code>登入後複製登入後複製testController.class.php
<code>class testController{ function show(){ $testModel = new testModel(); $data = $testModel->get(); return $data; } } </code>
testModel.class.php
<code>require('database.php'); get_connection(); class testModel{ function get(){ $sql = "SELECT * FROM db_problem"; $res = mysql_query($sql); return $res; } } </code>
testView.php
<code><html> <head> <meta charset="UTF-8"> <title>BUG列表</title> </head> <body> <table border="1px solid #bebebe" width="980px" cellpadding="1" cellspacing="0"> <tr> <th width="10%">ID</th> <th width="70%">问题</th> <th width="20%">提交时间</th> </tr> <tr style="text-align: center"> <td></td> <td></td> <td></td> </tr> </table> </body> </html> </code>
首先你得在控制器裡指定模版例如 $this->display('test');
然後在display方法中把模版include進來就行了
如果想複雜一點,為模版增加語法糖,就在display中判斷該模版是否有編譯過後的文件,沒有的話則執行編譯(實質上就是正則替換,比如{$test}替換為$this->test ),然後include編譯後的檔案
這樣就可以直接使用控制器的變數了
之前寫過一個簡單的mvc框架,你可以參考一下,核心內容在錢158行https://github.com/eyblog/mvc...
在controller裡面把模板中的變數和值存在資料裡面,file_get_content讀取view視圖檔案內容,模板變數標識可以按照你喜歡的來,例如{$user}或{{user}},然後正規表示式匹配替換,最後輸入echo
class Controller {
public $templateData = []; //儲存範本檔案的資料映射表
public function index(){
<code> $this->assign($key,$value);</code>
}
public function assign($key,$value){
<code> $this->assign($key,$value);</code>
}
public function display(){
<code> /*加载view文件内容 /*正则搜索替换 /*输出</code>
}
}