一.模型基类
模型类采用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.控制器类主要核心两个操作就是基于视图类的 模板赋值 和模板渲染功能,也就是传输到视图类中.