#9.创建控制器基类
控制器基类要实现的功能就是,实现加载相应的页面的方法并且传递数据到页面中。
为什么要创建控制器基类呢,在mvc中,工作原理是,网站首页->Home控制器->index方法->查询需要的所有数据->将数据发送到(view层)->展示给用户
我们新建一个controller基类,实现加载相应页面的方法,首先判断页面是否存在,如果存在那么则引入。并且传递数据到相应的页面中。
```cpp
|-core 框架核心目录
| |-Controller.class.php 所有控制器的基类
<?php
/**
* 所有控制器的基类
* User: find35.com
* Date: 15/12/26
* Time: 上午9:53
*/
class Controller
{
/**
* 加载指定的模板页面
* @param $page
* @param array $data
*/
public function show($page,$data=array()){
$url = "app/views/".$page.".php";
//判断页面是否存在
if(file_exists($url)){
require_once $url;
}
}
}
```
之后让所有其他的类,继承此基类。调用show方法来加载view层。
```cpp
|-app 前台
| |-controllers 存放所有的控制器目录
| |-Home.class.php
<?php
/**
* 前台首页控制器
* User: find35.com
* Date: 15/12/24
* Time: 下午5:44
*/
class Home extends Controller
{
public function index($data = array()){
//加载首页页面
$this->show('index/index',$data);
}
}
```
我们新建一个view层的模板文件,在随便里面写点东西
```cpp
|-app 前台
| |-views 存放所有的页面
| | | |-index.php 前台首页页面
<?php
/**
* 前台首页页面
* User: find35.com
* Date: 15/12/26
* Time: 下午1:09
*/
echo "前台首页";
echo '<pre>';
print_r($data);
echo '</pre>';
```
此时在浏览器中输入
```cpp
http://localhost/php_mvc/home/index/cityname/shanghai/id/7
```
显示如下,则表示成功
```cpp
前台首页Array
(
[cityname] => shanghai
[id] => 7
)
```