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 相关文章推荐
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
Jan 03 PHP
linux下安装php的memcached客户端
Aug 03 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
golang与PHP输出excel示例
Jul 22 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
2014过年倒计时示例
2014/01/31 PHP
19个Android常用工具类汇总
2014/12/30 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
基于jquery的$.ajax async使用
2011/10/19 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python 获取字符串MD5值方法
2018/05/29 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
用Python进行websocket接口测试
2020/10/16 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
致100米运动员广播稿
2014/02/14 职场文书
标准化管理实施方案
2014/02/25 职场文书
庆六一开幕词
2015/01/29 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
创业计划书之网吧
2019/10/10 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL