开发自己PHP MVC框架(一)
来源:互联网 发布:单片机串口转usb接线 编辑:程序博客网 时间:2024/05/22 07:07
本教程翻译自John Squibb 的Build a PHP MVC Framework in an Hour,但有所改动,原文地址:http://johnsquibb.com/tutorials
这个教程可以使大家掌握用mvc模式开发php应用的基本概念。此教程分为三个部分,现在这篇是第一部分。
现在市面上有很多流行的框架供大家使用,但是我们也可以自己动手开发一个mvc框架,采用mvc模式可以大大减少我们开发应用的时间,并且能够更好的组织项目源代码,而且其中的某些模块还可在其它项目中使用。现在我要教大家写一个简单的mvc框架。由于这个项目很简单,轻量,所以可能并不是最佳实践,也不具备安全性,还需要大家在实际应用中完善。
所用技术:php,面向对象开发方法。
开始
首先在网站根目录下建立三个文件夹
- models
- views
- controllers
然后在根目录下新建一个文件:
- index.php
现在项目结构应该像这样
§ 网站根目录
§ index.php
§ models/
§ views/
§ controllers/
index.php是整个web应用的入口点,所有的用户请求都会经过它。我们会写一些代码来把用户请求分派到相应的控制器中,这些控制器存放在controllers文件夹里。之后,我们就可以用下面的方式来实现页面跳转:
- http://你的域名.com/index.php?page1
- http://你的域名.com/index.php?page2
- http://你的域名.com/index.php?page3
设置前端控制器index.php
首先在index.php中定义网站根目录和网站域名,以便在整个应用中访问。
定义了网站根目录后,在任何php文件中,都能很方便的引用其它目录的php文件,因为index.php是入口文件,这样就能够在整个应用中访问在它之中定义的这些变量。
设置路由器router.php(转发用户请求到相应控制器)
在controllers目录下新建一个文件,名字为“router.php",这个文件用来处理所有页面请求。想像一下你家里的路由器,它负责把internet路由到家中的每个电脑。router.php文件将会获取传入到index.php的页面请求,然后把请求分派给不同的控制器(controllers)。
route.php中的代码:
这句代码会获取传入到应用中的请求参数。QUERY_STRING就是”?“后面的所有字符串。
- http://你的域名.com/index.php?page1
- http://你的域名.com/index.php?news&article=howtobuildaframework
如果没有上述输出,请检查你的服务器配置是否正确,并检查代码是否有错误。
注意我们把route.php中的测试代码复制过来了,并做了一些修改,我们把它放置在main函数里。现在让我们来修改route.php中的代码:
再次访问http://你的域名.com/index.php?news&article=howtobuildaframework,你将会看到从News_Controller打印出来的信息。注意,我们现在用die()来处理错误,我们可以用其它更好的错误处理来规制它,但现在使用die()足够了,试试访问其它页面如http://你的域名.com/index.php?books,你会看到"page does not exist!"错误。创建一个Model(模型)完善News_Controller。假设我们有一些新闻片段来供读者阅读,那么就需要News_Controller这个控制器去调用一个模型来抓取相关的新闻片段,无论它们是存储在数据库还是文件里。在models文件夹里新建一个文件,“news.php”,代码如下:
§ http://yourdomain.com/mvc/index.php?news&article=test
你会看到如下输出:
创建视图(VIEW)
现在我们已经有控制器和模型了,只差一个视图。视图是表现层,它是你的应用中,与用户接触最频繁的部分。之前我提到过,视图是提供与业务逻辑分离的用户接口,有很多方法可以做到这个。你可以使用模板引擎Smarty或其它类似的。你也可以写一个自己的模板引擎,但那肯定是相当艰巨的任务。最后,你可以使用原生php视图。
对于目前来说,php视图足够了。这个就像以前php与html代码混合编程一样,但是有一点不同是,我们的业务逻辑已经和视图分离了。看一下如下代码:
注意,嵌入的php标签利用了PHP 快捷操作符。这样就能够把我们的内容直接输出到HTML里面了。在views文件夹里新建一个文件“news.php”,把上述代码拷贝进来。现在我们有了视图文件,但是我们需要一个与视图交互的方法。在models文件夹里新建一个文件“view.php”,添加如下代码:
现在,最后一件要做的事就是从News_Controller里加载视图。修改controllers/news.php:
再加载页面,你就能够看到你的视图模板中的变量,已经被正确的替换掉了。好了,你的简单的MVC框架已经搭建好了,下面我会继续讲《开发自己PHP MVC框架(二)》
- 开发自己PHP MVC框架(一)
- 开发自己PHP MVC框架(一)
- 开发自己PHP MVC框架(一)
- 开发自己的PHP MVC框架(一)
- 开发自己PHP MVC框架
- PHP如何开发 MVC框架(一)
- 开发自己的PHP MVC框架(二)
- 使用PHP开发自己的MVC框架
- 开发自己PHP MVC框架1
- 学习php自行开发mvc框架过程(一)
- 自己写一个MVC框架(一)
- 写一个属于自己的PHP的MVC框架(一)
- PHP MVC 框架Symfony初探(一)
- 自己编写php框架(一)
- android应用开发MVC框架(一)
- 打造自己php的开发框架--php的MVC简单实现
- 自己写MVC框架:(一)数据库连接池
- 自己编写的MVC框架实践(一)
- int (*a)[10] 和 int *a[10] 的区别
- Python的BeautifulSoup安装
- 简单的压缩字符串
- Regsvr32 failed with 5 access is denied
- 创建树
- 开发自己PHP MVC框架(一)
- 基于C语言EOF与getchar()的使用详解
- C语言运算符优先级列表(超详细)
- hexo + github 博客搭建
- Rancher 2.0快速上手指南
- 斐波那契数列数列递归与非递归方式实现
- 阿里大于手机验证码
- Java如何获取方法参数的参数名称?
- Linux-一些好用的命令