php模擬一個簡易的mvc模型

mvc是生麼?
mvc是軟件設計的一種結構(即模型、視圖、控制器)

本篇文章會通過一個簡易的webapp來介紹mvc,目錄結構如下:
mvcDemo
    index.php
    modules
        UserModule.php
        BlogModule.php
    views
        user
            userPage.php
        blog
            blogPage.php
    controllers
        UserController.php
BlogController.ph

在以上的目錄結構中:
index.php
    【入口文件】是一個入口文件,是一個唯一讓瀏覽器請求的腳步文件;
modules
    【模型】用於提供數據並保存數據
views
    【視圖】用於提供界面的顯示
controller
    【控制器】用於協調模型和視圖
action控制器中定義的方法:

    【action】是控制其中定義的方法,瀏覽器直接請求,url中以參數的形式傳遞

以下在項目的創建過程中慢慢的來講解mvc的工作模式,所有的過程都是在虛擬機環境下的centos6中完成的(該虛擬環境已經具備了lamp環境)


一、首先我們創建一個目錄mvcDemo用於存放該項目:

二、接下來我們進入mvcDemo目錄創建相應的文件和文件夾,如下:


以上視圖我們創建了index.php入口文件;modules模型文件夾;views視圖文件夾;controllers存放控制類的文件夾

三、進入controllers目錄,創建一個UserController.php和BlogController.php,如下:


編輯UserController.php和BlogController.php;分別寫入如下代碼:

UserController.php:

<?php
class UserController{
        public function index(){
                echo '這是user控制器的index方法';
        }
}
BlogController.php:

<?php
class BlogController{
        public function index(){
                echo '這是博客控制器的index方法';
        }
}
四、返回上一級目錄,編輯index.php,如下:

<?php
        //這是一個入口文件

        //這是一個控制器
        $c = $_GET['c'];       //用於獲取url參數中傳過來的,具體的哪一個控制器
        //包含控制器
        include './controllers/'.$c.'Controller.php';    //將參數拼接爲我們要訪導入的類

        //實例化一個對象
        $className = $c.'Controller';
        $controller = new $className();

        //訪問方法名
        $m = $_GET['m'];        //用於獲取url參數中傳遞過來的,具體要訪問的哪一個方法
        $controller->$m();      //執行該方法,返回相應的數據或視圖
保存後,訪問url【server/mvcDemo/?c=User&m=index】,在我的電腦上訪問返回如下結果,注意【我的電腦IP地址爲192.168.1.112;項目存放目錄爲mvcTest】




可以看我我們正常訪問到了UserController類中的index方法。

在以上過程中我們已經通過了入口文件,訪問到了我們模型中的方法,並返回了相應的數據,接下來我們要通過模型,返回相應的視圖,展示給用戶:

五、進入views目錄,創建user和blog目錄

六、進入user目錄,創建一個index.php,並寫下如下代碼(一段簡單的htm):

<html>
        <head>
                <title>user</title>
        </head>
        <body>
                <h1>this is user view</h1>
        </body>
</html>
七、接下來進入controllers目錄,編輯我們創建好的UserController.php,加上如下代碼,將我們的視圖文件包含進來:

<?php
class UserController{
        public function index(){
                echo '這是user控制器的index方法';

                include './views/user/index.php';
        }
}

我們再次訪問url【server/mvcDemo/?c=User&m=index】,顯示如下:



可以看到我們剛纔寫的視圖文件正常執行,並顯示了

現在我們已經訪問入口文件,通過模型,訪問到了我們的視圖

接下來我們要訪問入口文件,通過模型,訪問視圖,並獲取數據庫中的數據(這裏數據庫中返回的數據,我們寫假數據):

八、進入modules目錄,創建一個文件UserModule.php,寫入如下代碼:

<?php
class UserModule{
        public function getData(){
                $data = '{result:{lilei:{age:25,sex:man},lili:{age:23,sex:woman}}';
                return $data;
        }
}
9、接下來我們編輯controllers目錄下的UserController.php文件,讓他調用UserModule.php
<?php
class UserController{
        public function index(){
                echo '這是user控制器的index方法';

                include './views/user/index.php';

                include './modules/UserModule.php';
                $umo = new UserModule();
                echo '<br/>';
                echo $umo->getData();
        }
}
再次訪問url【server/mvcDemo/?c=User&m=index】,顯示如下:


到此文章,一個簡易的mvc實現就完成了。






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