国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP MVC框架路由學習筆記

2024-05-04 21:57:31
字體:
來源:轉載
供稿:網友

文章主要講到了關于PHP MVC框架路由使用方法,有需要了解的同學可進入參考.說到PHP開發web,自然離不開開發框架,開發框架為我們提供了靈活的開發方式,MVC層分離,業務解耦等...

第一篇先來簡單點的,說說MVC框架的路由功能...

一般的單入口框架路由都是這樣的結構:

domain/index.php/classname/functionname/var1/var2這里的index.php 就被稱為入口文件...對于服務器而言,你這里訪問的就只有index.php 后面調用的controller 和里面的方法,甚至傳值都是在框架內部基于PHP層面實現的.

Talk is cheap, show you the code !!

首先,先建立好下面的文件結構,我們來動手試試,怎么才能訪問到controllers里面的文件...在index.php里面輸入以下內容:

print_r($_SERVER);

然后訪問 以下地址試試.

yourdomain/index.php/class/function/var1

這里作者我是用本地環境的,我訪問的地址是localhost/MVC/index.php/class/function/var1

我貼出最重要的2個變量

[REQUEST_URI] => /MVC/index.php/class/function/var1

[SCRIPT_NAME] => /MVC/index.php

其實路由最基本的原理就在這里:

通過這2個變量來提取url地址里的class 和 function,參數等,然后把class include進來,通過PHP的回調函數  call_user_func_array 調用對應的function和傳遞相應的參數.接下來上代碼,讀代碼應該比我寫的易懂.哈哈~~

index.php 的實例代碼如下:

  1. <?php    
  2.    
  3. # 定義application路徑    
  4. define(‘APPPATH’, trim(__DIR__,’/'));    
  5.    
  6. # 獲得請求地址    
  7. $root = $_SERVER['SCRIPT_NAME'];    
  8. $request = $_SERVER['REQUEST_URI'];    
  9.    
  10. $URI = array();    
  11.    
  12. # 獲得index.php 后面的地址    
  13. $url = trim(str_replace($root, ”, $request), ‘/’);    
  14.    
  15. # 如果為空,則是訪問根地址    
  16. if (emptyempty($url))    
  17. {    
  18.     # 默認控制器和默認方法    
  19.     $class = ‘index’;    
  20.     $func = ‘welcome’;    
  21. }    
  22. else   
  23. {    
  24.     $URI = explode(‘/’, $url);    
  25.    
  26.     # 如果function為空 則默認訪問index    
  27.     if (count($URI) < 2)    
  28.     {    
  29.         $class = $URI[0];    
  30.         $func = ‘index’;    
  31.     }    
  32.     else   
  33.     {    
  34.         $class = $URI[0];    
  35.         $func = $URI[1];    
  36.     }    
  37. }    
  38.    
  39.    
  40. # 把class加載進來    
  41. include(APPPATH . ‘/’ . ‘application/controllers/’ . $class . ‘.php’);    
  42.    
  43. #實例化    
  44. $obj = new ucfirst($class);    
  45.    
  46. call_user_func_array(    
  47.     # 調用內部function    
  48.     array($obj,$func),     
  49.     # 傳遞參數    
  50.     array_slice($URI, 2)    
  51. );    

在application/controllers 里面添加下面2個文件,index.php用于作為默認控制器

實例代碼如下:

  1. <?php    
  2.    
  3. class Index    
  4. {    
  5.    
  6.     function welcome()    
  7.     {    
  8.         echo ‘I am default controller’;    
  9.     }    
  10.    
  11. }    
  12.    
  13.    
  14. ?>   
  15.  
  16. hello.php 
  17.  
  18. <?php    
  19. class Hello    
  20. {    
  21.     public function index()    
  22.     {    
  23.         echo ‘hello world’;    
  24.     }    
  25.    
  26.     public function name($name)    
  27.     {    
  28.         echo ‘hello ‘ . $name;    
  29.     }    
  30. }    
  31.    
  32. ?>   

測試一下看看,能不能訪問了.根據上面的路由結構.我們來試試這個訪問正常,正確調用了hello這個class內部的name方法,然后把參數barbery傳遞過去了...再試試不輸入function name,看看能不能默認調用index.答案也是可以的...最后一個,訪問root地址看看也正確的映射到了默認控制器上...ok,一個簡單的MVC路由功能就完成了...

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁河县| 宁夏| 长垣县| 扶绥县| 深水埗区| 旌德县| 河池市| 新龙县| 辽中县| 清苑县| 鄢陵县| 乌兰浩特市| 大石桥市| 黄龙县| 苏尼特右旗| 邵东县| 天峨县| 冷水江市| 尚义县| 北辰区| 余庆县| 新化县| 沁阳市| 孟连| 湟源县| 扎囊县| 新兴县| 上犹县| 合肥市| 灵璧县| 淮安市| 东城区| 五家渠市| 隆昌县| 鱼台县| 灵寿县| 通渭县| 沅陵县| 泰来县| 如东县| 华坪县|