天天看點

php架構url處理的核心思路

普通模式

在 

ThinkPHP等

架構中,預設的URL格式即為普通模式:

  1. index.php?m=子產品名&c=控制器名&a=方法名

pathinfo模式

你可以列印 var_dump($_SERVER);學入了解,什麼是pathinfo。

格式如下:

  1. index.php/控制器/方法/參數n/值n

我們來看看普通模式的實作代碼。

  1. <?php

    //假設存在下面兩個類,你可以按照thinkphp的規則寫兩個類玩玩

    include 'index.class.php';

    include 'user.class.php';// 對使用者請求URL進行處理

    $query = $_GET;$controller = isset($query['c']) ? $query['c'] : 'indexController';

    $action = isset($query['a']) ? $query['a'] : 'index';

    if (class_exists($controller)) {  

     if (method_exists($controller, $action)) {

           unset($_GET['c']);

           unset($_GET['a']);        // 執行個體化使用者請求類并調用方法

           (new $controller())->$action();

       } else {

           echo '控制器' . $controller . '中不存在方法' . $action;

       }

    } else { 

       echo '不存在控制器' . $controller;

    }

其中 

unset()

 掉兩個get參數,隻是為了對真正調用的方法造成其他影響。

而pathinfo,你可以将$_SERVER中的pathinfo資訊得到後,使用http_build_query拼裝好。處理方式與上面處理的方式一樣。

php