这篇文章主要介绍了关于php源码之实现MVC结构微型框架,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
主要:
-
常量优化路径
-
自动加载类
-
优化入口文件
-
安全访问项目目录
----------------------------------------------------blog├─App│ ├─Model 模型│ │ └─UserModel.class.php 用户模型类 │ ├─View 视图│ │ ├─Back后台│ │ │ └─Index│ │ │ └─index.html 后台首页面│ │ └─Home前台│ │ └─User 用户视图目录│ │ └─login.html 登录表单页面│ ├─Controller 控制器│ │ ├─Back后台│ │ │ └─IndexController.class.php 后台首页控制器│ │ └─Home前台│ │ └─UserController.class.php 用户控制器├─Public 静态公共文件(js,css,images)│ ├─Plugins 插件│ │ └─layui 前端框架插件│ ├─Back后台│ │ ├─js/ js文件│ │ ├─css/ css样式文件│ │ └─image img图片 │ └─Home前台│ ├─js/ js文件│ ├─css/ css样式文件│ └─image img图片 ├─Frame 公共使用的类│ ├─BaseModel.class.php 数据库连接类│ ├─BaseController.class.php 控制器公共操作(设置编码,信息跳转)│ ├─FactoryModel.class.php 模型工厂类│ ├─Init.class.php 初始化应用类│ └─MySQLDB.class.php 数据库操作工具类└─index.php 入口文件-----------------------------------------------------------------
上一篇中,提出4个问题待解决,本篇集中解决这4个问题,最终形成完整的微型MVC框架结构, 后续博客项目,或其他项目,均可以直接使用该框架结构进行开发学习。
下载查看该项目源码: https://gitee.com/NewbiesYang/young_blog
常量优化路径
准备: 创建分支
1 $ git checkout master2 $ git checkout -b "MVC"
思路
1)把常用的目录路径定义成常量。如 模型目录,控制器目录等
2)引入类使用定义的常量替代部分路径。 如 include FRAME.BaseModel.class.php
3) 载入视图使用常量替代部分路径 如 include VIEW.'login.html' 简单形式
代码实现
1)操作步骤
step 1: 在入口文件中定义所需要的常量step 2: 控制器中引入视图时, 使用常量进行优化
操作步骤思路
2) 入口文件中定义常用路径常量 【index.php】
1 <?php 2 /** 3 * 入口文件 4 */ 5 $p = !empty($_GET['p']) ? $_GET['p'] :<b style="color:transparent">来&源gao@dai!ma.com搞$代^码%网</b><img>搞gaodaima代码</img> 'Home'; //平台 6 $c = !empty($_GET['c']) ? $_GET['c'] : 'User'; //控制器 7 $a = !empty($_GET['a']) ? $_GET['a'] : 'login'; //动作 8 9 define('PLAT', $p); //平台常量 10 define('CTR', $c); //控制器 11 define('ACTION', $a); //动作 12 13 14 define('DS', DIRECTORY_SEPARATOR); //目录分割符 15 define('ROOT', getcwd().DS); //当前所在目录 项目目录 16 define('FRAME', ROOT.'Frame'.DS); 17 define('APP', ROOT.'App'.DS); 18 define('PUB', ROOT.'Public'.DS); 19 define('ADMIN', PUB.'Admin'.DS); 20 define('HOME', PUB.'Home'.DS); 21 22 //MVC目录 23 define('MODEL', APP.'Model'.DS); 24 define('VIEW', APP.'View'.DS.PLAT.DS.CTR.DS); 25 define('CTRONLLER', APP.'Controller'.DS.PLAT.DS); 26 27 $ctr = $c."Controller"; 28 29 require_once FRAME.'Db.class.php'; //数据库操作类 30 require_once FRAME.'BaseModel.class.php'; //基础模型类 31 require_once MODEL.'UserModel.class.php'; //用户模型类 32 require_once FRAME.'FactoryModel.class.php';//模型工厂类 33 require_once FRAME.'BaseController.class.php'; //基础控制器类 34 require_once CTRONLLER.$ctr.'.class.php'; 35 36 37 //实例化控制器 38 $userCtr = new $ctr(); 39 40 $userCtr -> $a();