#4.URL路由之pathinfo路由
我们常见pathinfo地址如下:
```cpp
localhost/php_mvc/index.php?controller=home&method=index
```
这个路由地址,是运行前台的index.php入口,并且传递了两个参数controller和method
controller表示执行哪个控制器,method表示执行哪个方法。上面这条url就是要执行home控制器的index方法。
我们现在就要实现在前台index.php接受这两个参数,当没有这两个参数时,默认执行home控制器中的index方法。然后引入相应的类,加载指定控制器中的指定方法,实例化控制器类,调用控制器中的方法。
```cpp
|-index.php 项目前台入口文件,单一入口
<?php
/**
* Created by PhpStorm.
* User: find35.com
* Date: 15/12/24
* Time: 下午5:15
*/
echo "<meta charset='utf-8'>";
require_once 'app/controllers/Home.class.php';
require_once 'app/controllers/Test.class.php';
//接受两个参数 controller控制器名称 method控制器中的方法
$controller = isset($_GET['controller']) ? $_GET['controller'] : 'home';
$method = isset($_GET['method']) ? $_GET['method'] : 'index';
//加载指定控制器中的制定方法
//实例化控制器类
$c = new $controller;
//调用控制器中的方法
$c->$method();
```
```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(){
echo "这里是home控制器里的index方";
}
}
```
```cpp
|-app 前台
| |-controllers 存放所有的控制器目录
| |-Test.class.php
<?php
/**
* Created by PhpStorm.
* User: find35.com
* Date: 15/12/24
* Time: 下午5:44
*/
class Test
{
public function index(){
echo "这里是test控制器的index方法";
}
}
```
下面的前两个url在浏览器中应该是一样的结果
```cpp
localhost/php_mvc/index.php
localhost/php_mvc/index.php?controller=home&method=index
localhost/php_mvc/index.php?controller=test&method=index
```