返回 完成框架及其理...... 登陆

完成框架及其理解

李铁蛋 2018-12-09 21:18:50 270

一.模型基类

    模型类采用Medoo框架作为基础,继承于Medoo类,然后写入构造方法将配置文件的数据库参数传入

namespace hero\core;
//引用Medoo框架的命名空间
use Medoo\Medoo;

class Model extends Medoo
{
    public function __construct(array $options=null)
    {
        //导入配置文件
        $config = require '../config.php';
        $options = $config['db'];
        parent::__construct($options); 继承父类构造方法
    }
}

二.视图基类

    视图类用第三方的一个基于原生PHP的模板引擎:plates,也是继承Engine类,然后继承一下父类的构造方法,初始化模板目录,和当前模板默认扩展名

namespace hero\core;

use League\Plates\Engine;

class View extends Engine
{
    //变量容器
    protected $data = [];

    //构造方法

    /**
     * View constructor.
     * @param null $directory   模板默认目录
     * @param string $fileExtension 当前模板默认扩展名:php
     */
    public function __construct($directory = null, $fileExtension = 'php')
    {
        parent::__construct($directory, $fileExtension);
    }
}

三.控制器基类

    1.控制器类主要是对视图类模板引擎的参数进行设置,先实例化试图类,让默认参数传入

    2.如果自己写入控制器基本,最基本的两个方法,就是[模板赋值]和[模板渲染]

namespace hero\core;

class Controller
{
    //视图对象
    protected $view = null;

    //构造方法:实例化视图类
    public function __construct()
    {
        $this->view = new namespace\View();
        //配置模板引擎
        $this->config();
    }

    //模板引擎配置
    public function config()
    {
        //设置后台模板目录名称
        $this->view->setDirectory(ROOT_PATH.'/app/admin/view');

        //设置后台模板目录别名:命名空间
        $this->view->addFolder('admin',ROOT_PATH.'/app/admin/view');

        //设置前台模板目录名称
        $this->view->setDirectory(ROOT_PATH.'/app/home/view');

        //设置前台模板目录别名:命名空间
        $this->view->addFolder('admin',ROOT_PATH.'/app/home/view');

    }

    //任何模板引擎都有两个核心的功能
    //1.模板赋值  2.渲染模板
    //1.模板赋值
    public function assign($name,$value)
    {
        $this->data[$name] = $value;
    }

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

    //2.模板渲染
    public function fetch($file)
    {
        //1.将容器数组中的元素(键值对)转为变量
        //$data['price'] = 1000,        目标:$price = 1000
        //data['arr'] = [1,2,3],        目标:$arr = [1,2,3]
        //将数组中的键值对,转为变量的明值对的过程
        extract($this->data);

        //2.加载模板文件
        if(file_exists($file) && is_file($file)){
            require $file;
        }

    }
}

四.整体框架的理解

    1.框架主要基于MVC模式设计,围绕模型M,控制器C,视图V来进行编写,

    2.主要运行流程由客户端发出请求,基于路由解析,分发请求,到控制器中进行操作,将数据传到M模型中进行数据处理并返回给C控制器,在由C控制器输出给V视图中显示在客户端中

    3.入口文件主要负责加载必要文件和需要使用的常量传入基本参数,还有比较重要的启动框架

    4.模型基类继承与第三方框架的话则不用写很多增删改查操作,基于父类框架即可使用

    5.视图类基于第三方框架也是如此

    6.控制器类主要核心两个操作就是基于视图类的 模板赋值 和模板渲染功能,也就是传输到视图类中.




最新手记推荐

• 用composer安装thinkphp框架的步骤 • 省市区接口说明 • 用thinkphp,后台新增栏目 • 管理员添加编辑删除 • 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消 回复 发送
  • PHP中文网