#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
)
```