PHP从零开始打造自己的MVC框架之入口文件实现方法详解


Posted in PHP onJune 03, 2019

本文实例讲述了PHP从零开始打造自己的MVC框架之入口文件实现方法。分享给大家供大家参考,具体如下:

首先来了解一下框架的运行流程:

入口文件 -> 定义常量 -> 引入函数库 -> 自动加载类 -> 启动框架 -> 路由解析 -> 加载控制器 -> 返回结果

PHP从零开始打造自己的MVC框架之入口文件实现方法详解

入口文件index.php:

<?php
/*
入口文件
1.定义常量
2.加载函数库
3.启动框架
*/
// 定义当前框架所在的根目录
define('IMOOC', __DIR__);
// 定义框架核心文件所在的目录
define('CORE', IMOOC.'/core');
// 项目文件所在目录
define('APP', IMOOC.'/app');
// 定义项目调试模式
define('DEBUG', true);
// 判断项目是否处于调试状态
if (DEBUG) {
  // 设置报错级别:显示所有错误
  ini_set('display_error', 'On');
}else{
  ini_set('display_error','Off');
}
// 加载函数库
include CORE.'/common/function.php';
// 加载框架核心文件
include CORE.'/imooc.php';
\core\Imooc::run();

框架核心目录里的公共函数function.php:

<?php
/*
输出对应的变量或者数组
*/
function p($var){
  if(is_bool($var)){
    var_dump($var);
  }elseif (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>';
  }
}

框架核心文件imooc.php:

<?php
namespace core;
class Imooc
{
  static public function run()
  {
    p('ok');
  }
}

运行项目,访问入口文件index.php,浏览器如期输出一个:ok

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
Web程序工作原理详解
Dec 25 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 #PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 #PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 #PHP
php中的buffer缓冲区用法分析
May 31 #PHP
PHP实现基于状态的责任链审批模式详解
May 31 #PHP
Laravel框架实现调用百度翻译API功能示例
May 30 #PHP
Laravel框架学习笔记之批量更新数据功能
May 30 #PHP
You might like
轻松修复Discuz!数据库
2008/05/03 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
bootstrap table小案例
2016/10/21 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
JS实现简单打字测试
2020/06/24 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
python中最小二乘法详细讲解
2021/02/19 Python
出国签证在职证明
2014/01/16 职场文书
银行求职信范文
2014/05/26 职场文书
小学生差生评语
2014/12/29 职场文书
中学教师个人总结
2015/02/10 职场文书
六一儿童节致辞
2015/07/31 职场文书
护士工作心得体会
2016/01/25 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android