您好,登錄后才能下訂單哦!
這篇文章主要介紹php mvc如何實現,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php mvc的實現方法:首先定義系統目錄;然后獲取控制器;最后在瀏覽器中輸入“path/to/yoursite/index.php?controller=test&action=test”即可測試成功。
PHP實現MVC開發得最簡單的方法——單點入口
今天就開始詳細的寫寫我對MVC的一些理解,以及我在開發過程中實現自己的一個框架的一個流程。其中或許說的不正確,還望指正!
網站關于MVC的教材很多了,我這里不具體說了,不明白的,推薦自己上百度搜索下“MVC",相信可以找到你想要的東西的。這里我談談在PHP實際開發中,我對MVC的理解。M,module,主要任務是把數據庫或者其他文件系統的數據按照我們需要的方式讀取出來。V,view,我的理解是主要負責頁面的先是,把數據以html的形式顯示給用戶。C,controller,主要負責業務邏輯,比如說你要顯示登陸界面,就需要調用一個控制器userController的方法loginAction來顯示(可能這個不需要調用module),再比如你進行登陸檢查就可以調用userController的方法checkAction來進行邏輯處理。(感覺Verdana的指正_)。
引用
M是指model。Controller 并不參與業務邏輯,整個業務邏輯部分應該是放在 Model 層中的。Controller 只起到分發請求的作用,也就是說得到當前的 Request,決定調用哪個 Model 獲取數據,然后再賦值給哪個 View 來渲染頁面
具體實現MVC,我覺得最好還是要做到單點入口。
什么是單點入口呢?所謂單點入口就是整個應用程序只有一個入口,所有的實現都通過這個入口來轉發,比如說在上面我們就使用index.php作為程序的單點入口,當然這個是可以由你自己任意控制的。
為什么要做到單點入口呢?單點入口有幾大好處:第一、一些系統全局處理的變量,類,方法都可以在這里進行處理。比如說你要對數據進行初步的過濾,你要模擬session處理,你要定義一些全局變量,甚至你要注冊一些對象或者變量到注冊器里面(主要是實現在全局,具體你可以參考我先前翻譯的一些文章《在PHP中使用全局變量》)。第二、程序的架構更加清晰明了。當然好處還有很多的,我也不一一列舉了,具體你可以去體會。
當然單點入口也存在一些不足,比如你系統大了后,不可能只一個點做為入口,尤其系統存在兩個完全不相關的功能時候,不過很高興的說,這個是可以擴展,你可以擴展多個入口。比如說在最近一個大項目中,后臺的管理和前臺是不相關的,所以我就會有兩個入口,一個是index.php一個是admin.php。但這不不是說單點入口不好(具體含義你可以揣摩下)。
那么,如何實現單點入口呢?這是我本節的重點。一般來說都是通過url的地址映射實現的(前面我有一篇文章說到這個:《回答PHPCHINA上的幾個問題:URL映射》,里面實現了單點入口的核心,這里我具體實現,并演示下)。單點入口最關鍵的就是通過url傳遞參數來實現程序的分配,具體說,比如:地址是index.php?controller=test&action=test,這就通過index.php把請求轉發到對應的testController文件中,并執行其對應的testAction方法(這里的控制器和方法的命名都參考了Zend Framework的思想)。
下面我們用最簡單的方法是來實現上面說的單點入口(記住:簡單起見,我這里沒有使用URL映射了)
/index.php <? /** * MVC演示demo * 僅僅實現最基本的MVC功能,不包含安全處理,數據過濾,及其他優化措施。 */ define(‘SITE_PATH’,str_replace(‘‘,’/’,dirname(FILE)));//定義系統目錄 controller=(!empty(controller=(!empty(_GET[‘controller’]))?GET[‘controller′]:‘index′; //獲取控制器,默認indexGET[‘controller′]:‘index′; //獲取控制器,默認indexaction=(!empty(GET[‘action′]))?GET[‘action′]))?_GET[‘action’]:‘index’; //方法名稱,默認index controllername=controllername=controller.‘Controller’; controllerfile=SITEPATH.‘/app/controller/′.controllerfile=SITEPATH.‘/app/controller/′.controller_name.‘.class.php’;//獲取控制器文件 if(file_exists(controller_file)){ require_once(controller_file)){ require_once(controller_file); controller=newcontroller=newcontroller_name(); controller->{controller->{action.‘Action’}(); }else{ die(‘找不到對應的控制器!’); } ?> 對應的一個演示demo /app/controller/testController.class.php(注意路徑) <? /** * MVC演示demo * 僅僅實現最基本的MVC功能,不包含安全處理,數據過濾,及其他優化措施。 */ class testController { function testAction(){ echo ‘Hello,World!’; } } ?>
打開瀏覽器,輸入http://path/to/yoursite/index.php?controller=test&action=test(注意相應的修改你的路徑),如果你看到Hello,World!說明MVC第一步,單點入口成功了!
以上是php mvc如何實現的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。