首頁 > 後端開發 > php教程 > 在php中Controller向View傳值

在php中Controller向View傳值

WBOY
發布: 2016-08-18 09:16:13
原創
1941 人瀏覽過

想用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>
登入後複製

}
}

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板