框架入门 基础篇 (下)M,V,C

上一章 我们学习了 框架的入口文件 自动加载和路由

接下来我们继续学习 C - M - V

由路由 分配到控制器 控制器调用model 最后展示视图

路由好了之后 我们该根据路由返回的控制器名方法名 去加载控制器和方法了

    public static function run()
    {
        $route = new \core\lib\route();
        $ControllerName = ucfirst($route->controller);
        $ActionName = $route->action;
        $ControllerFile = APP . '/controllers/' . $ControllerName . 'Controller.php';
        $ControllerClass = '\\' . MODULE .'\controller\\' . $ControllerName . 'Controller';
        if(is_file($ControllerFile)){
            include $ControllerFile;
            $controller = new $ControllerClass();
            $controller->$ActionName();
        }else{
            throw new \Exception("找不到控制器".$ControllerName);    
        }
    }

新建一个控制器 IndexController.php
先P输出一个 this is index

在url 输入 www.xxx.com(你的虚拟域名)/index/index

页面显示 this is index

<?php

namespace application\controller;

class IndexController extends \core\imooc
{
    public function index()
    {
        p("this is index");
        $model = new \core\lib\model();
        $sql = "select * from news";
        $ret = $model->query($sql)->fetchAll();
        $this->assign('list',$ret);
        $this->display('index.php');
    }
}

大家可能看不懂 P方法是什么
下面贴上我自定义这个方法的代码

<?php

function P($var){
    if (is_bool($var)) {
        var_dump($var);
    } else if (is_null($var)) {
        var_dump(NULL);
    } else {
        echo "<pre style='position:relative;z-index:1000;padding:10px;border-radius:5px;background:#F5F5F5;border:1px solid #aaa;font-size:14px;line-height:18px;opacity:0.9;'>" . print_r($var, true) . "</pre>";
    }
}

就是一个打印函数

接下来要连接数据库了

那么我们再新建一个model基类
他继承自php的POD类
这样这个类本身就有自带一些方法了

<?php

namespace core\lib;

class model extends \PDO
{
    public function __construct()
    {
        $dns = 'mysql:host=localhost;dbname=laravel;charset=utf8';
        $username = 'root';
        $passwd = 'root';
        try {
            parent::__construct($dns ,$username ,$passwd);
        } catch (\PDOException $e){
            p($e->getMessage());
        }
    }
}

数据也取到了 那么我们该把数据赋值并显示在页面上了

我们在TP框架中有个
assign和display方法
借鉴一下


public $assign;
public function assign($name,$value)
{
    $this->assign[$name] = $value;
}

public function display($file)
{
    $file = APP . '/views/' . $file;
    if(is_file($file))
    {
        extract($this->assign);
        include $file;
    }
}

最后在views 文件夹 新建一个index.php 展示数据

<h1>简易MVC</h1>
<table>
    <tr>
        <td>ID</td>
        <td>content</td>
        <td>title</td>
    </tr>
    <?php foreach($list as $v){ ?>
        <tr>
            <td><?php echo $v['art_id']?></td>
            <td><?php echo $v['content']?></td>
            <td><?php echo $v['title']?></td>
        </tr>
    <?php } ?>
</table>

打开页面发现 展示成果

那么我们最最简易的mvc就封装完成了!

虽然还有一些缺点
比如 一些参数都写的比较死 还没有日志操作类
在接下来的框架入门 中级篇当中 我们会继续学习不断完善这个框架

敬请期待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值