基于MVC模式的PHP框架设计
【摘 要】对于任何语言,框架的发展都是为了降低程序之间的依赖性和耦合性,使重用性达到最高。本文参照框架、PHPMVC模型的优缺点,设计一个部署和应用简单、且效率高,具有良好的扩展性和可维护性、占用服务器资源低的PHP框架。
【关键词】框架;MVC模式;PHP
本文设计的PHP框架(下文统称为IdeaPHP),是一个采用面向对象的设计思想,基于MVC模式开发的轻量级PHP框架,具有单一入口、类自动加载、强大基础类、扩展类等功能。该框架继承PHP的优点,部署和应用极为简单、且效率高,具有良好的扩展性和可维护性、占用服务器资源低等特点,能使WEB开发变得更简单、更快捷,可以稳定的用于个人或中小型企业系统的开发。
1 框架特点
1)基于MVC的开发模式,三个部件相互独立,改变其中一个不会影响其它两个,低耦合性;同时,具有很好的维护性、重用性和适用性。
2)本框架采用模块和操作的方式设计,代码采用面向对象思想,框架源码简单易用,独立灵活,便于维护和调试,或二次开发。
3)该框架提供了数据库访问层、功能扩展接口(支持自定义扩展类库和扩展函数),直接使用即可完成一些常见的功能,操作灵活,简单易用。
4)使用MemcachedSQLsession进行缓存,使用Smarty缓存技术进行页面静态化,提升效率,减少运行消耗。
2 框架主要功能
2.1 单一入口
单一入口即一个文件处理所有的HTTP请求,即访问网站任何功能,都是从浏览器访问index.php文件,这个文件就是这个应用程序的单一入口。在一般的web过程化编程时,每个PHP文件都能独立访问并运行,这犹如一场演唱会,需要在每个入口都要检票和安全检查。而采用单一入口进行项目部署和访问时,一个项目只有一个(但不一定是唯一)入口,就像演唱会如果只能从一个入口入场(程序是抽象的,一个和多个入口效率一样),则可以灵活
控制现场秩序和安全。这在一些常见框架如zendthinkphpqeephp等,都采用了统一的入口,这样的设计模式在权限控制,url重写,结合MVC清晰的目录结构等都有很大优势。
2.2 目录组织结构
在应用程序开发时,项目的目录结构往往由不同项目的应用而决定。本框架项目的应用目录(如controlsmodelsviews等)和入口文件的位置,可以自行合理布置,其他公用资源目录和配置文件(如classescommonspublicruntimeconfig.inc.php),则必须同框架目录(本框架定义为IdeaPHP,下同)在同一级。
例:要为一企业部署一个产品宣传网站,该项目分为前台及后台部分,这两部分可以部署在不同的的应用目录下。访问时,只需要在入口文件中配置”APP”的值,然后直接访问入口文件即可生成所有目录结构。
如:前台入口文件名命名:index.php,该入口文件的代码如图1
1 入口文件的配置代码
运行入口文件后,自动生成的应用目录结构如图2
2 应用目录结构
2.3 URL访问
IdeaPHP框架使用PATHINFO模式的URL访问方式,要访问任何功能,都由URL的参数来统一解析和调度。其格式如下:
http///入口文件/模块名/操作名/参数1/1
如:应用程序在www.IdeaPHP主机下,接入文件为index.php,要访问图片管理模块(image),再去执行编号为1pid=1)的图片进行编辑(edit)操作,则URL的格式如下:
http//www. IdeaPHP/index.php/image/edit/pid/1
如果在URL访问中除了模块和操作,需要更多参数,可再追加参数。如下所示:
http//www. IdeaPHP/index.php/image/edit/pid/1/page/2 #再追加参数page=2
2.4 内置扩展类库
IdeaPHP框架在commons目录下的functions.inc.php文件中(支持自定义函数),内置了P()、D()函数,其中函数P() 的功能是按照特定格式输出一个或多个任意类型(数组、对象、字符串等)的变量或数据;函数D() 用于快速实例化Model类库。此外,php文件下载源码IdeaPHP框架在classes目录下也内置了常用的扩展类库,如分页类page.class.php(提供分类功能)、图像处理类image.class.php(缩放、水印图片等功能)、文件上传类fileupload.class.php(上传文件功能)等,同样,开发者也可以自定义扩展功能类。
2.5 缓存机制
IdeaPHP框架中使用了SmartyMemcached两种缓存机制,这两种可同时使用。
1)基于Smarty的缓存机制
缓存机制能能有效的减轻网站的服务器压力,本框架通过使用Smarty模板引擎提供了非常简单的缓存操作。
2)基于memcached缓存设置
Memcached 是高效、快速的分布式内存对象缓存系统,IdeaPHP框架的memcached缓存设置会自动将session信息和从数据库获取的结果集缓存到memecached中,只要用户执行了添加、修改或删除等有影响表行数的操作,就会重新将数据缓存,加速 WEB应用程序。
3 MVC模式的设计
3.1 控制器的声明(controller

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。