#8.解析URL參數
在剛才的app.class.php類parseurl方法中,我們已經獲取到了url的參數,我們繼續在run方法中對這個參數進行判斷,是否存在多余的參數,如果有參數,那么我們要傳遞參數,否則就不傳遞參數。
對于要傳遞的參數,我們要判斷有幾個參數,鍵值是否合法。
是否大于0,是否是偶數,for循環,不滿足的都報錯“非法參數”
```cpp
|-core 框架核心目錄
| |-App.class.php URL重寫類
/**
* 項目的入口方法
* @throws Exception
*/
public static function run(){
self::paseUrl();
//得到控制器的路徑
$url = 'app/controllers/'.self::$controller.'.class.php';
//判斷控制器文件是否存在
if(file_exists($url)){
$c = new self::$controller;
}else{
throw new Exception('控制器不存在');
}
//執行方法
if(method_exists($c,self::$method)){
$m = self::$method;
$new_pams = array();
$num = count(self::$pams);
//傳遞參數,判斷是否有參數
if($num > 0){
//判斷傳遞的參數的數量是否是2的倍數
if($num % 2 == 0){
//將參數進行處理
for($i=0;$i<$num;$i+=2){
$new_pams[self::$pams[$i]] = self::$pams[$i+1];
}
}else{
throw new Exception('非法參數!');
}
}
$c->$m($new_pams);
}else{
throw new Exception('方法不存在');
}
}
```
```cpp
|-app 前臺
| |-controllers 存放所有的控制器目錄
| |-Home.class.php
<?php
/**
* Created by PhpStorm.
* User: find35.com
* Date: 15/12/24
* Time: 下午5:44
*/
class Home
{
public function index($data = array()){
echo "這里是home控制器里的index方法";
echo "<pre>";
print_r($data);
}
}
```
此時我們就已經將多余的參數都傳遞到指定的控制器的方法中了。在瀏覽器中輸入
```cpp
http://localhost/php_mvc/home/index/cityname/shanghai/id/7
```
如果瀏覽器中顯示如下,則表示成功
```cpp
這里是home控制器里的index方法
Array
(
[cityname] => shanghai
[id] => 7
)
```