设为首页 加入收藏

TOP

编写自己的PHP MVC框架笔记(四)
2017-10-10 11:58:31 】 浏览:2090
Tags:编写 自己 PHP MVC 框架 笔记
lue
) { $fields[] = sprintf("`%s` = '%s'", $key, $value); } return implode(',', $fields); } }

应该说,Sql.class.php 是框架的核心部分。为什么?因为通过它,我们创建了一个 SQL 抽象层,可以大大减少了数据库的编程工作。虽然 PDO 接口本来已经很简洁,但是抽象之后框架的可灵活性更高。

3.8视图View类

视图类 View.class.php 内容如下:

<?php
/**
 * 视图基类
 */
class View
{
    protected $variables = array();
    protected $_controller;
    protected $_action;
 
    function __construct($controller, $action)
    {
        $this->_controller = $controller;
        $this->_action = $action;
    }
    /** 分配变量 **/
    function assign($name, $value)
    {
        $this->variables[$name] = $value;
    }
    /** 渲染显示 **/
    function render()
    {
        extract($this->variables);
        $defaultHeader = APP_PATH . 'application/views/header.php';
        $defaultFooter = APP_PATH . 'application/views/footer.php';
        $controllerHeader = APP_PATH . 'application/views/' . $this->_controller . '/header.php';
        $controllerFooter = APP_PATH . 'application/views/' . $this->_controller . '/footer.php';
        // 页头文件
        if (file_exists($controllerHeader)) {
            include ($controllerHeader);
        } else {
            include ($defaultHeader);
        }
        // 页内容文件
        include (APP_PATH . 'application/views/' . $this->_controller . '/' . $this->_action . '.php');
        // 页脚文件
        if (file_exists($controllerFooter)) {
            include ($controllerFooter);
        } else {
            include ($defaultFooter);
        }
    }
}

这样我们的核心的PHP MVC框架就编写完成了,下面我们开始编写应用来测试框架功能。

4、应用

4.1数据库部署

在 SQL 中新建一个 mydb 数据库,使用下面的语句增加 item 数据表并插入2条记录:

CREATE DATABASE ` mydb ` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE ` mydb `;
CREATE TABLE `item` (
    `id` int(11) NOT NULL auto_increment,
    `item_name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO `item` VALUES(1, 'Hello World.');
INSERT INTO `item` VALUES(2, 'Lets go!');

4.2部署模型

然后,我们还需要在 models 目录中创建一个 ItemModel.php 模型,内容如下:

<?php
 
class ItemModel extends Model
{
    /* 业务逻辑层实现 */
}

模型内容为空。因为 Item 模型继承了 Model,所以它拥有 Model 的所有功能。

4.3部署控制器

在 controllers 目录下创建一个 ItemController.php 控制器,内容如下:

<?php
class ItemController extends Controller
{
    // 首页方法,测试框架自定义DB查询
    public function index()
    {
        $items = (new ItemModel)->selectAll();
 
        $this->assign('title', '全部条目');
        $this->assign('items', $items);
    }
    // 添加记录,测试框架DB记录创建(Create)
    public function add()
    {
        $data['item_name'] = $_POST['value'];
        $count = (new ItemModel)->add($data);
 
        $this->assign('title', '添加成功');
        $this->assign('count', $count);
    }
    // 查看记录,测试框架DB记录读取(Read)
    public function view($id = null)
    {
        $item = (new ItemModel)->select($id);
 
        $this->assign('title', '正在查看' . $item['item_name']);
        $this->assign('item', $item);
    }
    // 更新记录,测试框架DB记录更新(Update)
    public function update()
    {
        $data = array('id' => $_POST['id'], 'item_name' => $_POST['value']);
        $count = (new ItemModel)->update($data['id'], $data);
 
        $this->assign('title', '修改成功');
        $this->assign('count', $count);
    }
    
    // 删除记录,测试框架DB记录删除(Delete)
    public function delete($id = null)
    {
        $count = (new ItemModel)->delete($id);
 
        $this->assign('title', '删除成功');
        $this->assign('count', $count);
    }
}

4.4部署视图

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【夯实PHP系列】PHP正则表达式 下一篇PHP中抽象类,接口定义

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目