企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#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 ) ```