mvc只控制器,模型,视图的搭建

在之前我们已经搭建好了入口文件,自动加载类以及路由类。今天我们就来搭建控制器,模型,以及视图。

一、加载控制器

        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方法的里面

       3)如果控制器存在我们将include进来 然后实例化拼接控制器的路径 执行以下看看是否错误  (如果错误基本上都是拼接路径上出错了)没有错的话我们可以将实例化的内容起一个变量名,然后使用变量名中对应的方法;

二、模型类

   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的函数

从数组中将变量导入到当前的符号表

通俗来说就是将值变成键



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值