mvc加载控制器、模型类以及视图类编写

一、加载控制器

1)首先我们要创建一个app的文件夹在创建一个控制器的文件夹在里面创建一个index的控制器 由于类名和方法名重复的时候会使方法成为一个初始化的方法 那么解决的办法是将类名后面加一个Controller,这样就能避免发生类似的问题 如下:
这里写图片描述

2)然后我们在加载控制器的编码部分 首先我们用一个变量存放我们对应的控制器 然后再判断控制器是否存在(在拼接的时候一定要看清路径不然会报错误),当然我们需要引用前面的route类

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

$route = new \core\lib\route();
        $controller = $route->ctrl;
        $action = $route->action;
        $ctrlFile = APP.'/controller/'.$controller.'Controller.php';
        $ctrlClass = '\\'.MODULE.'\controller\\'.$controller.'Controller';
        if (is_file($ctrlFile)) {
            include $ctrlFile;
            $ctrl = new $ctrlClass();
            $ctrl->$action();
        } else {
            throw new \Exception("找不到次控制器",$controller);

        }

二、模型类

1)首先我们要将控制器来链接我们的数据库 我们先要创建一个model类 我们要将这个model类来继承PDO这样它就有自带的方法了 然后我们要写一个初始化的方法 在初始化的方法当中链接我们的数据库,我们来模拟一下链接数据库

<?php  
namespace core\lib;
use \core\lib\conf;
class model extends \PDO{
    public function __construct(){
        // $dsn = 'mysql:host=localhost;dbname=ltyhose';
        // $username = 'root';
        // $passwd = 'root';
        $temp = conf::all('database');
        var_dump($temp);
        try {
            parent::__construct($temp['DSN'],$temp['USERNAME'],$temp['PASSWD']);
        } catch (\PDOException $e) {
            var_dump($e->getMessage());
        }
    }
}

这里面也是将数据库需要的参数从配置中读取,注释的是可以直接写死,也可以出来。

2)在控制器中实例化这个model类 然后测试的写一个select查询语句然后用实例化的model类执行sql语句进行输出输出结果说明我们创建的模型已经完成;

        public function index(){
        $sql = "select *from 表明";
        $model = new \core\lib\model();
            $res = $model->query($sql);
        var_dump($res->fetchAll());
    } 

这样出来的结果就是我们所查询出来的数组

三、视图类

1)首先我们要在控制器中定义一个我们想要的方法来进行视图层的传数据与显示视图层,例如:

$this->assign('title',$title);//assign可以自己定义
$this->assign('data',$data);
$this->display('index.html');//显示视图层

2)之后我们需要让控制器继承这个mvc.php如下图:
继承mvc.php

3)我们在mvc.php中增加以下两个方法:

/**
     * [assign description]
     * @param  [type] $name  [变量名]
     * @param  [type] $value [变量值]
     */
    public  function assign($name,$value){
        $this->assign[$name] = $value;
    }

    /**
     * [display description]
     * @param  [type] $file [文件名]
     */
    public function display($file){
        $file = APP.'/views/'.$file;
        if (is_file($file)) {
            extract($this->assign);//将数组打散
            include $file;
        }
    }

然后就可以执行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值