这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php实现简单的MVC框架。分享给大家供大家参考。具体如下:

在开始之前需要知道的知识

1.php基础知识

2.单一入口, 不知道的可以看看这里 ()

具备以上两点, 那我们就可以开始啦. 哈哈!

先来说一下程序的执行流程

首先有个入口文件, 然后初始化一些程序, 之后根据请求调用不同的类和方法

首先我们弄一个入口文件 Index.php 来看看代码

require "Init.php";

$control = new Controller();

$control->Run();

?>

代码没什么特别的, 首先先引入Init.php文件 然后实例化一个类

然后调用该类的Run()方法 这里我们把这个类叫做控制器

既然引入了Init.php文件, 那么我们继续看看Init.php文件的源码

header("Content-type:text/html;charset=utf-8");

!defined('ROOT_PATH') && define('ROOT_PATH', str_replace('\\', 'http://www.jb51.net/', dirname(__FILE__)));

require ROOT_PATH . '/Core/Config.php'; //引入配置文件

require ROOT_PATH . '/Core/Controller.class.php'; //引入控制器类文件

require ROOT_PATH . '/Core/View.class.php'; //视图类文件

require ROOT_PATH . '/Core/Model.class.php'; //模型类文件

?>

分析一下代码, 如果你懂了, 可以略过这一步, 继续往下看哦.

首先 设置字符集, 然后判断如果没有定义常量"ROOT_PATH"那么就定义它

然后就是引入一些文件, 首先是配置文件, 控制器类文件, 视图类文件, 模型类文件

同理既然引入了文件,那么我们就打开文件看看代码, 先来看Config.php文件

$C = array(

'URL_MODE' => 1, //URL模式, 1普通模式, 2 PATH_INFO模式

'DEFAULT_CONTROL' => 'welcome', //默认调用的控制器

'DEFAULT_ACTION' => 'index', //默认执行的方法

);

?>

没什么特别的就是一个数组, 有三个值, 暂时先这样, 以后有需要在来增加

那么好, 我们继续看Controll.class.php

class Controller

{

public function Run()

{

$this->Analysis(); //开始解析URL获得请求的控制器和方法

$control = $_GET['c'];

$action = $_GET['a'];

//这里构造出控制器文件的路径

$controlFile = ROOT_PATH . '/Controllers/' . $control . '.class.php';

if(!file_exists($controlFile)) //如果文件不存在提示错误, 否则引入

{

exit('控制器不存在' . $controlFile);

}

include($controlFile);

$class = ucwords($control); //将控制器名称中的每个单词首字母大写,来当作控制器的类名

if(!class_exists($class)) //判断类是否存在, 如果不存在提示错误

{

exit('为定义的控制器类' . $class);

}

$instance = new $class(); //否则创建实例

if(!method_exists($instance, $action)) //判断实例$instance中是否存在$action方法, 不存在则提示错误

{

exit('不存在的方法' . $action);

}

$instance->$action();

}

protected function Analysis()

{

global $C; //包含全局配置数组, 这个数组是在Config.ph文件中定义的

if($C['URL_MODE'] == 1) //如果URL模式为1 那么就在GET中获取控制器, 也就是说url地址是这种的?c=控制器&a=方法

{

$control = !empty($_GET['c']) ? trim($_GET['c']) : '';

$action = !empty($_GET['a']) ? trim($_GET['a']) : '';

}

else if($C['URL_MODE'] == 2) //如果为2 那么就是使用PATH_INFO模式, 也就是url地址是这样的 控制器/方法/其他参数

{

if(isset($_SERVER['PATH_INFO']))

{

//$_SERVER['PATH_INFO']URL地址中文件名后的路径信息, 不好理解, 来看看例子

//比如你现在的URL是 那么你的$_SERVER['PATH_INFO']就是空的

//但是如果URL是

//现在的$_SERVER['PATH_INFO']的值将会是 index.php文件名称后的内容 /abc/123/

$path = trim($_SERVER['PATH_INFO'], 'http://www.jb51.net/');

$paths = explode('http://www.jb51.net/', $path);

$control = array_shift($paths);

$action = array_shift($paths);

}

}

//这里判断控制器的值是否为空, 如果是空的使用默认的

$_GET['c'] = $control = !empty($control) ? $control : $C['DEFAULT_CONTROL'];

//和上面一样

$_GET['a'] = $action = !empty($action) ? $action : $C['DEFAULT_ACTION'];

}

}

?>

注释写的很清楚, 这里我就不多说了, 做到这, 你就可以建立一个Controller目录, 然后在目录中建立welcome.class.php文件

写入如下内容

class Welcome

{

public function index()

{

echo 'Hello';

}

}

?>

允许程序你将会看到Hello

然后在写一个方法

class Welcome

{

public function index()

{

echo 'Hello';

}

public function show()

{

echo '方法名称Show';

}

}

?>

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

php怎么实现简单的mvc框架,php实现简单的MVC框架实例相关推荐

  1. php实现简单的框架,PHP 实现简单的 MVC 框架

    前言: 在 PHP 的世界中,有着众多的框架,它们各有所长,各具特色.既有 Zend,Symfony,Laravel 等大型框架,也有 CodeIgniter,Slim Framework 等轻量级的 ...

  2. Android 开发的两种框架 MVC和MVP 的简单分析

    在常见的android开发框架,有MVC和MVP两种,下面我来分别简单介绍一下. 一.MVC框架 MVC,即model(模型),view(视图),controler(控制器)三个单词的简称. 其中Mo ...

  3. Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。

    Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 前方: 开源地址:GitHub - cyq1162/Taurus.MVC: Taurus.mvc i ...

  4. idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...

  5. ssm框架requestmapping找不到_框架学习,就是介么简单

    框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...

  6. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...

    程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...

  7. java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程

    今天头一次配置成功一个SSM框架,兴奋之余,还应该从使用的角度,将整个ssm配置的方法,配置的原因,认真的分析一下.在结束了对SSM框架简单的分析之后,就要开始回归基础,全面的认真复习.所以这个文档, ...

  8. 使用实体框架核心创建简单的审计跟踪

    目录 介绍 背景 审核日志数据 审核表实体 审核类型 审计Db上下文 审核表配置 数据更改到审核表 实体更改为审核表实体 所有实体更改为审计表 在现有的DbContext中使用审核跟踪 创建DbCon ...

  9. php 对mvc的认识,【PHP】MVC框架为何这么难! 4年后终于明白了,被ThinkPHP害得!...

    [PHP]MVC框架为什么这么难!!! 4年后终于明白了,被ThinkPHP害得!! 本帖最后由 default7 于 2014-05-15 18:39:05 编辑 这个帖子送给那些被ThinkPHP ...

  10. 学校作业——配置ssm框架做一个简单的登陆注册

    补一下blog 1.配置maven 指向阿里的镜像并且导入ssm框架所需的依赖 <mirror><id>nexus-aliyun</id><mirrorOf& ...

最新文章

  1. php改变图片大小png背景变黑,php – 当将透明背景的PNG图像调整大小/转换为JPEG时,如何用白色替换黑色背景...
  2. Centos6 安装RabbitMq3.7.7
  3. jQuery-DOM
  4. 视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比
  5. Sort List[leetcode] 由归并排序的递归和循环,到本题的两种解法
  6. java 多线程合并结果集_多线程计算数据,然后合并数据
  7. python colorbar位置大小调整_python - matplotlib相邻子图:添加colorbar更改子图的大小 - 堆栈内存溢出...
  8. 剑指offer(C++)-JZ25:合并两个排序的链表(数据结构-链表)
  9. 使用pyinstaller讲python文件打包成exe文件运行时,弹出命令行界面
  10. 我奋斗了18年还是不能和你坐在一起喝咖啡
  11. 【EXLIBRIS】随笔记 009
  12. MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist
  13. 一小球从100米高度落下,每次落地后反弹原来高度的一半,问第十次落地经过的路径多长?第十次落地后反弹多高?
  14. 先图科技的AGI模盒发布了!
  15. CSAPP Final Exam Preparation: reading solution records (2b continued)
  16. 第十七届“科大讯飞杯”题解
  17. Intellij Idea在引入Eclipse工程的时候,报unmapped spring configuration的解决办法
  18. PTA 悄悄关注 (25 分)
  19. 合肥十中高考2021成绩查询,2019合肥十中录取分数线及2019高考成绩喜报
  20. 中航创世智慧康复,助力康复医疗技术跨越发展

热门文章

  1. C++ Primer 第11章 泛型算法 学习总结
  2. netcore docker_让.NetCore程序跑在任何有docker的地方
  3. win启动linux iso文件位置,安装Linux之后如何进入win系统?
  4. mac node oracle,将Python3.5(Mac OS X El Capitan)连接到Oracle集群(远程)
  5. linux中的集线器、交换机、路由器及组网
  6. python教程输入_python怎么输入一个集合
  7. 亚马逊出的平板电脑_亚马逊推出了这款不到400元的平板电脑!学生党的福音!...
  8. 吴恩达:机器学习应以数据为中心
  9. 征稿 | Call for papers on Knowledge Graphs
  10. 论文浅尝 | 中科院百度微软等学者最新综述论文40+最新方法阐述知识图谱提升推荐系统准确性与可解释性...