首頁  >  文章  >  後端開發  >  PHP的MVC框架路由功能實作方法。

PHP的MVC框架路由功能實作方法。

小云云
小云云原創
2017-11-13 14:01:132549瀏覽

現如今PHP已經是廣為使用的一種程式語言,只要是做PHP開發都離不開一些PHP框架,開發框架為我們提供了靈活的開發方式,MVC層分離,業務解耦等等,讓我們的開發更為快速方便。但很多人只是會使用框架,卻從來不去了解框架的內部是如何實現的,這對我們程式設計能力的提升是沒有一點用處的。那麼這篇文章,我們就先來一個簡單點的功能,也就是說說 一般的單入口框MVC框架的路由功能實作方法。架路由都是這樣的結構:localhost/MVC/index.php/classname/functionname/var1/var2。這裡的index.php通常被我們稱為入口文件。對於伺服器而言,你這裡訪問的就只有index.php 後面呼叫的controller 和裡面的方法,甚至傳值都是在框架內部基於PHP層面實現的。下面我們就來簡單的實作MVC框架路由功能。

1、首先,建立好MVC檔案結構

PHP的MVC框架路由功能實作方法。

#下面我們就來動手試試,怎麼才能存取controllers裡面的文件。

在index.php裡面輸入以下內容:

<?php  
/**  
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W  
 */     
//打印出所有的服务器变量  
print_r($_SERVER);   
?>

  然後輸入存取位址試試看。這裡我是用本地環境的,我造訪的位址是:localhost/MVC/index.php/class/function/var1。下面我貼出兩個最重要的變數:

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

2、index.php檔案內容

<?php  
/** 
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
//定义application路径     
define(&#39;APPPATH&#39;, trim(__DIR__ . &#39;/&#39;));  
//获得请求地址     
$root = $_SERVER[&#39;SCRIPT_NAME&#39;];  
$request = $_SERVER[&#39;REQUEST_URI&#39;];  
$URI = array();  
//获得index.php 后面的地址     
$url = trim(str_replace($root, &#39;&#39;, $request), &#39;/&#39;);  
//如果为空,则是访问根地址     
if (empty($url)) {  
    //默认控制器和默认方法  
    $class = &#39;index&#39;;  
    $func = &#39;welcome&#39;;  
} else {  
    $URI = explode(&#39;/&#39;, $url);  
  
    //如果function为空 则默认访问index     
    if (count($URI) < 2) {  
        $class = $URI[0];  
        $func = &#39;index&#39;;  
    } else {  
        $class = $URI[0];  
        $func = $URI[1];  
    }  
}  
 //把class加载进来     
include(APPPATH . &#39;/&#39; . &#39;application/controllers /&#39; . $class . &#39;.php&#39;);  
  
//实例化->将控制器首字母大写    
$obj = ucfirst($class);  
  
call_user_func_array(  
//调用内部function     
    array($obj, $func),  
    //传递参数     
    array_slice($URI, 2)  
);  
?>

##3、在application/controllers裡面加入下面2個檔案(index.php,hello.php)

① index.php


<?php
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
class Index  
{  
    function welcome()  
    {  
        # code...  
        echo "default covtroller!";  
    }  
}  
?>

② hello.php

  

<?php
/** 
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
class Hello{  
    public function index(){  
        echo "hello world!";  
    }  
    public function name($name){  
        echo "hello ".$name;  
    }  
}  
?>  ] view plain copy
<?php  
/**

4、測試

測試一下看看,能不能訪問了。根據上面的路由結構。我們可以來試試。透過測試我們會發現這個存取正常,正確呼叫了hello這個class內部的name方法,然後把參數jack傳遞過去了。再試試不輸入function name,看看能不能預設呼叫index,答案也是可以的。最後一個就是訪問root位址看看,也是同樣正確的映射到了預設控制器上。 (測試結果圖片就不截圖貼上去了。)

上面的案例已經講解完畢, 這樣,一個簡單的MVC路由功能就完成了。

相關推薦:

什麼是MVC框架

#理解PHP中的MVC框架簡介

使用php搭建自己的mvc框架


以上是PHP的MVC框架路由功能實作方法。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn