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