DPT-一种PHP设计模式

上传人:人*** 文档编号:507368447 上传时间:2023-10-28 格式:DOCX 页数:12 大小:68.99KB
返回 下载 相关 举报
DPT-一种PHP设计模式_第1页
第1页 / 共12页
DPT-一种PHP设计模式_第2页
第2页 / 共12页
DPT-一种PHP设计模式_第3页
第3页 / 共12页
DPT-一种PHP设计模式_第4页
第4页 / 共12页
DPT-一种PHP设计模式_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《DPT-一种PHP设计模式》由会员分享,可在线阅读,更多相关《DPT-一种PHP设计模式(12页珍藏版)》请在金锄头文库上搜索。

1、一、DPPT介绍PHP为为什么在在主流的的应用中中总是那那么不出出色,总总是不如如.Neet/JJavaa,就是是因为在在PHP处理大大型应用用的时候候,那些些不完整整的面向向对象机机制、数数据库处处理的单单一,不不通用性性等等,影响了了PHP做大型型应用。那么,如何来来改变这这个状况况呢?当当然就是是需要引引进一些些新的设设计方法法,把PHP中不健健全的面面向对象象机制完完整起来来,进行行更好的的PHP大中型型应用的的开发。从Javva过来的MVC模式非非常流行,而且已已经有部部分已经经引伸进进了PHHP领域,设计模模式的引引进,就就是为了了更好的的控制项项目开发发。今天天我要说说一种设设计

2、模式式,类似似于MVC,它叫DPT模式。其实有有时候我我也觉得得有点象象Javva里面的DAOO(Daata Acccesss Obbjecct),不过DAO是夹在在业务逻逻辑层和和数据库库资源层层之间的的,而DPT更多的的是把业业务逻辑辑也封装装在类里里,和DAO层在相相同的内内容中。D DDataa,数据据收集层层P Phhp,PHP数据调调用层TT Teempllatee,模板板层首先先,我们们要对它它进行简简单的了了解。Dataa,就是是我们的数据层层,它不不是数据据库抽象象类,而而是通过过数据库库接口,执行一一些SQL,把数据据获取的的过程,一般把把这种操操作封装装在类里里面,就就形

3、成了了我们的的数据收收集层。Php,就是对对我们收收集的数数据进行行整理,规划,同时解解析模板板进行数数据的显显示。Tempplatte,模板板层,就就是我们们的HTMML页,里里面不包包含任何何PHP代码,只有模模板标签签的内容容,通过过它来控控制数据据在页面面中有格格式的显显示。我们们这里三三层中,每一层层都是鼓鼓励由一一个人来来开发,然后通通过PHPPDocc之类的的工具,把源代代码中的的API生成文文档,由由P层的人人进行调调用。那么么,在实实际的项项目开发中,它是怎怎么运作作的呢,我们又又如何把把这种设设计模式式引进我我们的项项目中呢呢?我们们下面将将运用一一个实际际的项目目来讲解解

4、DPT模式。阅读一一下内容容必须具具备基本本的PHPP4的面向向对象编编程、数数据库抽抽象类、模板等等知识。我们们目前为为了加速速PHP的开发发,都使使用PHP封装了了部分功功能,比比如数据据库操作作抽象类类,模板板类等等等,这些些都是为为了开发发复杂应应用而应应运而生生的。目目前比较较主流的的数据库库抽象类类有phpplibb dbb、PEAAR:DB、ADOODB等等,模板处处理类有有phpplibb teempllatee、smaartTTempplatte、Smaartyy等等。本文中中都是使用PHPP Grroupp推荐的的产品,数据口口抽象类类使用PEAAR:DB,模板板处理类类使

5、用Smaartyy,如果果对这两两个类库库不熟悉悉的读者者,请参参考文章章后面的的链接。二、项目目体系结结构下面面我们来来构建我我们基于于DPT模式的PHP应用。(以下下部分内内容参考考MVC模式、类封装装还是黑黑客代码码)文件目录录结构(只涉及及到关键键的目录录)cllasss类类库,包包含所有有的数据据收集层层temmplaate模板文文件存放放目录iinclludee常常用库,包括PEAAR、Smaartyy等类库库,同时时还有自自己定义义的基本本函数cconffig.incc.phpp基本本配置文文件,包包括数据据库配置置,其他他基本信信息配置置seccuriity.incc.phhp

6、安全全处理页页,主要要多传递递的变量量进行处处理innit.incc.phhperrrorr.phhp错错误处理理页classs目录中中存放了了我们数数据收集集层中的的内容,一般的的建议是是每个类类文件只只是针对对一个表表进行操操作,比比如cmssMesssagge.cclasss.pphp,那么么这个类类就是属属于功能能CMS里面的的,只负负责操作作Messsagge这个表表。所有有的数据据库交互互和操作作都是封封装在类类里的,在P层不允允许出现现任何直直接操作作数据库库的语句句。tempplatte目录中存放了我我们的网网页模板板,模板板中都是是使用Smaartyy标签进进行排列列的,同同

7、时,在在模板中中,都是是建议使使用JSCSS来控制制页面,模板中中只有DIV标签来来简单的的排版,这样,非常利利于网站站改版和和更换皮皮肤。inclludee目录就就是对常常用文件件的包含含,比如如PEAAR:DB类、Smaartyy类库文文件等。connfigg.innc.pphp就是基基本的配配置文件件,包括括数据库库、基本本常量等等等,seccuriity.incc.phhp是安全全处理页页,我们们这里主主要是做做一个变变量的安安全检查查,下面面内容我我们将仔仔细介绍绍。iniit.iinc.phpp是一个个初始化化操作的的页面,包括初初始化数据据库链接接,实例例化模板板处理类类等等操操

8、作,errror.phpp是错误误信息处处理页,所有的的错误信信息通过过URL编码后后转到该该页。三、项目目基本配配置代码码关键页页代码实实例:/* * connfigg.innc.pphp *配置置文件*/*数数据库配配置 */deffinee(DDB_HHOSTT, loocallhosst); /数据库库主机ddefiine(DBB_USSER, rooot); /数据库库链接用用户deefinne(DB_PASSS, ); /连接密密码deefinne(DB_NAMEE, cmms); /默认数数据库ddefiine(DBB_POORT, 33006); /数据库库端口ddefiine

9、(DBB_TYYPE, myssql); /数据库库类型ddefiine(DBB_OPPT, 11); /是否长长期链接接/*模板板信息配配置 */deffinee(TTPL_TEMMPLAATE_DIRR, ./temmplaate/); /模板目目录deefinne(TPLL_COOMPIILE_DIRR, ./temmplaate/temmplaatess_c/); /模板编编译目录deffinee(TTPL_CONNFIGGS_DDIR, ./ttempplatte/cconffigss/); /模板配配置文件件目录ddefiine(TPPL_CCACHHE_DDIR, ./temmp

10、laate/cacche/); /模板缓缓存目录录deffinee(TTPL_LIFFTTIIME, 1); /缓存时时间deefinne(TPLL_CAACHEEINGG, ttruee); /是否缓缓存deefinne(TPLL_LEEFT_DELLIMIITERR, ); /左边界界符deefinne(TPPL_RRIGHHT_DDELIIMITTER, ); /右边界界符/*网站路路径配置置 */deffinee(RROOTT_PAATH, ddirnnamee(_FILLE_); /网站所所在根目目录deefinne(URLL_PAATH, ddirnnamee($_SERRVERR

11、PHHP_SSELFF); /网站URL地址路路径deefinne(DB_PATTH, ROOOT_PATTH./inncluude/db); /PEAAR:DB目录deefinne(TPLL_PAATH, RROOTT_PAATH./iinclludee/smmartty); /SSmarrty目录/* ssecuuritty.iinc.phpp *安全过过滤文件件*/*过滤滤规则 */$arrr_ffilttratte = arrrayy(, , );/*过滤函函数 */funnctiion varr_fiiltrratee($vvar) gglobbal $arrr_ffilttratt

12、e; forreacch ($arrr_ffilttratte aas $vallue) iif (ereegi($vaar, $vaalue) rretuurn truue; reeturrn ffalsse; /*获取取不同版版本下的的GET和POSST数组 */if (phhpveersiion() 44.1.0) $geet = &$HTTTP_GGET_VARRS; $poost = &$HTTTP_POSST_VVARSS; elsse $gget = &$_GGET; $ppostt = &$_POSST;/*检查GET变量 */if (coount($geet) forreac

13、ch ($poost as $geet_vvar) iff (vvar_filltraate($geet_vvar) exiit(Commmitt geet pparaametter fallsitty); /*检查POSST变量 */if (coountt($ppostt) fforeeachh ($posst aas $posst_vvar) iff (vvar_filltraate($poost_varr) exxit(Coommiit ppostt paarammeteer ffalssityy); 其实实,以上上过滤的的方法也也不是最最好的,建议参参考我的的另两篇篇防注入入文章获获取更好好的方法法,链接接参考附附录。/* eerroor.pphp*错误误处理页页面*/iff (!issset($geetmmsg) exxit(Noot ccommmit parrameeterr);echho Errror Messsagge: . $geetmmsg;eccho 返回上上一页;就是是一些错错误处理理的作用用,一般般出的GET方式传传递过来来的消息息都是经经过urllenccodee()过的字字符。/* * iinitt.innc.pphp*初始始化程序序*/reequiire_oncce(ddirnnamee(_FILLE_).connfigg.innc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号