php mvc的简单实现

php mvc的实现方法:首先定义系统目录;然后获取控制器;最后在浏览器中输入“path/to/yoursite/index.php?controller=test&action=test”即可测试成功。

php mvc的简单实现

推荐:《PHP视频教程》

PHP实现MVC开发得最简单的方法——单点入口 

今天就开始详细的写写我对MVC的一些理解,以及我在开发过程中实现自己的一个框架的一个流程。其中或许说的不正确,还望指正!

网站关于MVC的教材很多了,我这里不具体说了,不明白的,推荐自己上百度搜索下“MVC”,相信可以找到你想要的东西的。这里我谈谈在PHP实际开发中,我对MVC的理解。M,module,主要任务是把数据库或者其他文件系统的数据按照我们需要的方式读取出来。V,view,我的理解是主要负责页面的先是,把数据以html的形式显示给用户。C,controller,主要负责业务逻辑,比如说你要显示登陆界面,就需要调用一个控制器userController的方法loginAction来显示(可能这个不需要调用module),再比如你进行登陆检查就可以调用userController的方法checkAction来进行逻辑处理。(感觉Verdana的指正_)。

立即学习“PHP免费学习笔记(深入)”;

引用

M是指model。Controller 并不参与业务逻辑,整个业务逻辑部分应该是放在 Model 层中的。Controller 只起到分发请求的作用,也就是说得到当前的 Request,决定调用哪个 Model 获取数据,然后再赋值给哪个 View 来渲染页面

具体实现MVC,我觉得最好还是要做到单点入口。

什么是单点入口呢?所谓单点入口就是整个应用程序只有一个入口,所有的实现都通过这个入口来转发,比如说在上面我们就使用index.php作为程序的单点入口,当然这个是可以由你自己任意控制的。

为什么要做到单点入口呢?单点入口有几大好处:第一、一些系统全局处理的变量,类,方法都可以在这里进行处理。比如说你要对数据进行初步的过滤,你要模拟session处理,你要定义一些全局变量,甚至你要注册一些对象或者变量到注册器里面(主要是实现在全局,具体你可以参考我先前翻译的一些文章《在PHP中使用全局变量》)。第二、程序的架构更加清晰明了。当然好处还有很多的,我也不一一列举了,具体你可以去体会。

当然单点入口也存在一些不足,比如你系统大了后,不可能只一个点做为入口,尤其系统存在两个完全不相关的功能时候,不过很高兴的说,这个是可以扩展,你可以扩展多个入口。比如说在最近一个大项目中,后台的管理和前台是不相关的,所以我就会有两个入口,一个是index.php一个是admin.php。但这不不是说单点入口不好(具体含义你可以揣摩下)。

那么,如何实现单点入口呢?这是我本节的重点。一般来说都是通过url的地址映射实现的(前面我有一篇文章说到这个:《回答PHPCHINA上的几个问题:URL映射》,里面实现了单点入口的核心,这里我具体实现,并演示下)。单点入口最关键的就是通过url传递参数来实现程序的分配,具体说,比如:地址是index.php?controller=test&action=test,这就通过index.php把请求转发到对应的testController文件中,并执行其对应的testAction方法(这里的控制器和方法的命名都参考了Zend Framework的思想)。

下面我们用最简单的方法是来实现上面说的单点入口(记住:简单起见,我这里没有使用URL映射了)

/index.php/*** MVC演示demo* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。*/define(‘SITE_PATH’,str_replace(‘‘,’/’,dirname(FILE)));//定义系统目录controller=(!empty(controller=(!empty(_GET[‘controller’]))?GET[‘controller′]:‘index′;//获取控制器,默认indexGET[‘controller′]:‘index′;//获取控制器,默认indexaction=(!empty(GET[‘action′]))?GET[‘action′]))?_GET[‘action’]:‘index’;//方法名称,默认indexcontrollername=controllername=controller.‘Controller’;controllerfile=SITEPATH.‘/app/controller/′.controllerfile=SITEPATH.‘/app/controller/′.controller_name.‘.class.php’;//获取控制器文件if(file_exists(controller_file)){ require_once(controller_file)){ require_once(controller_file);controller=newcontroller=newcontroller_name();controller->{controller->{action.‘Action’}();}else{die(‘找不到对应的控制器!’);}?>对应的一个演示demo/app/controller/testController.class.php(注意路径)/*** MVC演示demo* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。*/class testController{function testAction(){echo ‘Hello,World!’;}}?>

登录后复制

打开浏览器,输入http://path/to/yoursite/index.php?controller=test&action=test(注意相应的修改你的路径),如果你看到Hello,World!说明MVC第一步,单点入口成功了!

以上就是php mvc的简单实现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2521057.html

(0)
上一篇 2025年3月5日 16:49:39
下一篇 2025年3月2日 01:42:36

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php 汉字拼音如何转换

    php汉字拼音的转换方法:首先创建一个PHP示例文件;然后通过“include_once”引入“inyin.php”;最后通过“Pinyin::getPinyin(“…”);”方法实现拼音转换即可。 推荐…

    2025年3月5日
    200
  • php 对象如何转json

    php对象转json的方法:首先创建一个PHP示例文件;然后定义一个数组;最后通过【json_encode】函数将php对象转换json对象即可。 推荐:《PHP视频教程》 本教程操作环境:windows7系统、PHP5.6版,该方法适用于…

    2025年3月5日
    200
  • 如何解决php插入数据乱码问题

    php插入数据乱码的解决办法:首先要设置数据表的字符集为utf8;然后修改字符集格式;接着建立字符集为utf-8的数据库;最后通过php mysql语句插入数据即可。 推荐:《PHP视频教程》 mysql数据库乱码问题解决办法 我们在使用数…

    2025年3月5日 编程技术
    200
  • 如何解决php get 参数乱码问题

    php get参数乱码的解决办法:1、使用“iconv(“gb2312″,”UTF-8”,$gonghui);”方法解决乱码问题;2、通过“mb_convert_encoding ”方法解决乱…

    2025年3月5日
    200
  • php正则如何不包含某字符串

    php正则不包含某字符串的方法:首先创建一个PHP示例文件;然后通过正则表达式“ preg_match(”/[^(abc)]/s”, $str, $arr);”实现判断不包含某字符串即可。 推荐:《PHP视频教程》 常见函数 strstr(…

    2025年3月5日
    200
  • 怎么解决php读取文件乱码问题

    php读取文件乱码的解决办法:首先打开相应的代码文件;然后通过“iconv($encodType, “utf-8”, $content);  ”方法解决中文乱码即可。 推荐:《PHP视频教程》 PHP读取文件,解决中…

    2025年3月5日
    200
  • php session 取不到值怎么办

    php session取不到值是因为没有将session传递进来,其解决办法就是在使用php的session之前,通过“session_start()”方法打开session即可。 推荐:《PHP视频教程》 最近在写PHP的时候遇到了这个问…

    2025年3月5日
    200
  • php修改xml的方法

    php修改xml的方法:首先创建一个代码示例文件;然后通过“$new->nodeValue=$_content;”方法修改节点值即可。 推荐:《PHP视频教程》 php创建、增加、删除、修改xml 创建xml 方法:  formatO…

    2025年3月5日
    200
  • php显示不了图片的解决办法

    php显示不了图片是因为源代码中除了img输出外,还有其它输出,其解决办法就是取消在header被调用之前的任输出即可。 推荐:《PHP视频教程》 具体问题: php文件可以输出图片却无法显示出来! 使用 立即学习“PHP免费学习笔记(深入…

    2025年3月5日
    200
  • 想培训php怎么样

    培训php绝对是不会后悔的一个想法!引用鸟高的一句话“php是一门能帮人们高效解决问题,快速实现想法的优秀工具,有什么理由不被大量采用呢?”。所以有市场就有需求,拥有一技之能,走哪都有香饽饽的饭吃! 简单来说,PHP上手快,适合大众口味,而…

    2025年3月5日
    200

发表回复

登录后才能评论