在之前我们已经搭建好了入口文件,自动加载类以及路由类。今天我们就来搭建控制器,模型,以及视图。
一、加载控制器
1)首先我们要创建一个app的文件夹在创建一个控制器的文件夹在里面创建一个index的控制器 由于类名和方法名重复的时候会使方法成为一个初始化的方法 所以我们将类名后面加一个Controller,这样我们就避免了它成为一个初始化的方法。
2)然后我们在加载控制器的编码部分 首先我们用一个变量存放我们对应的控制器 然后再判断控制器是否存在
以下为源码
$controllerClass = $route->controller;
$action = $route->action;
$controllerFile = APP.'/Controller/'.$controllerClass.'Controller.php';
$controllerClass = '\\'.MODULE.'\Controller\\'.$controllerClass.'Controller';
if (is_file($controllerFile)) {
include $controllerFile;
$controller = new $controllerClass();
$controller->$action();
} else {
throw new \Exception("找不到控制器", $controllerClass);
}
该代码是放在启动run方法的里面
二、模型类
1)首先我们要将控制器来连接我们的数据库 我们先要创建一个model类 我们要将这个model类来继承基类model 然后我们要写一个初始化的方法 在初始化的方法当中连接我们的数据库。以下为源码
public function __construct($db,$username,$password,$dbname)
{
mysql_connect($db,$username,$password);
mysql_query('set names utf8');
mysql_select_db($dbname);
}
/**
* query方法
*/
public function query($sql)
{
$result = mysql_query($sql);
return $result;
}
/**
* 查询方法
*/
public function select($tableName)
{
$sql = 'SELECT * FROM '.$tableName;
$result = $this->query($sql);
$arr = array();
while ($row = mysql_fetch_assoc($result)) {
$arr[] = $row;
}
return $arr;
}
/**
* 删除方法
*/
public function delete($tableName,$where)
{
$sql = 'DELETE FROM '.$tableName.' WHERE '.$where;
$result = $this->query($sql);
if ($result) {
return $this->affectedRow();
} else {
return false;
}
}
/**
* 查询单条
*/
public function find($tableName,$where)
{
$sql = "SELECT * FROM $tableName WHERE " .$where;
$result = $this->query($sql);
$res = mysql_fetch_assoc($result);
return $res;
}
/**
* 受影响行数
*/
public function affectedRow()
{
return mysql_affected_rows();
}
2)在控制器中实例化这个model类 然后测试的写一个select查询语句然后用实例化的model类执行sql语句进行输出输出结果说明我们创建的模型已经完成;
$model = new \core\lib\model('127.0.0.1','root','root','kao');
$data = $model->select('goods');
三)视图层
1)我们需要在我们的核心类库下创建视图方法来为我们渲染试图层
public function view($file,$array)
{
$file = APP.'/View/'.$file;
if (is_file($file)) {
extract($array);
}
include $file;
}
2)其次我们在控制器就可以调用此方法,建立一个index.php的视图层文件然后将值传递给此文件就好。
<?php
namespace app\Controller;
class indexController extends \core\core
{
public function index()
{
$model = new \core\lib\model('127.0.0.1','root','root','kao');
$data = $model->select('goods');
$this->view('index.php',array('data' => $data));
}
}
extract的函数
从数组中将变量导入到当前的符号表
通俗来说就是将值变成键