日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

学习如何写PHP MVC框架(1) -- 路由

發布時間:2023/12/20 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习如何写PHP MVC框架(1) -- 路由 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說到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 (empty($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 ?>

hello.php

1 <?php 2 class Hello 3 { 4 public function index() 5 { 6 echo 'hello world'; 7 } 8 9 public function name($name) 10 { 11 echo 'hello ' . $name; 12 } 13 } 14 15 ?>

測試一下看看,能不能訪問了。根據上面的路由結構。我們來試試

這個訪問正常,正確調用了hello這個class內部的name方法,然后把參數barbery傳遞過去了。。。

再試試不輸入function name,看看能不能默認調用index。。

答案也是可以的。。。

最后一個,訪問root地址看看

也正確的映射到了默認控制器上。。。

ok,一個簡單的MVC路由功能就完成了。。。

轉載于:https://www.cnblogs.com/CHEUNGKAMING/p/4080936.html

總結

以上是生活随笔為你收集整理的学习如何写PHP MVC框架(1) -- 路由的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。