php mvc的實作方法:先定義系統目錄;然後取得控制器;最後在瀏覽器中輸入「path/to/yoursite/index.php?controller=test&action=test」即可測試成功。
推薦:《PHP影片教學》
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的簡單實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!