返回首页
当前位置: 首 页 > PHP初学 >

一种PHP设计模式:DPT

时间:2009-01-15 23:55来源:未知 作者:网络 点击:
D - Data,数据收集层 P - Php,PHP数据调用层 T - Template,模板层 Data,就是我们的数据层,它不是数据库抽象类,而是通过数据库接口,执行一些SQL,把数据获取的过程,一般把这种操作封
  

五、使用DPT模式的项目规划

一般在所有的软件项目或者是网站项目中,要保证一个项目能够顺利完整的完成,那么便需要技术主管或者架构师良好的设计和管理。一般所有项目中人是最难控制的因素,你可以把项目指定的非常完善,架构可以选择的非常合理,但是你不能控制人的因素,不能保证项目的中的某个成员可能在任何时候离开项目。当在PHP项目中,如果一个项目角色忽然的离去,可能导致项目要停顿,要重新找人来接替,影响了项目的进度,那么如何有效的控制和解决这些问题。

在一个使用DPT设计模式的项目中,项目中个个角色分别有网页设计师、网页制作人员、客户端脚本JavaScript程序员、服务器端PHP程序员。他们的分工都是什么呢?网页设计师负责设计网页的界面,生成效果图,然后由网页制作人员去做成网页,当然,如果是遵循Web标准的项目的话,那么网页制作人员主要的任务就是负责页面布局样式的编写。客户端程序员主要是负责客户端脚本的编写,比如针对页面中需要使用的JavaScript进行编写,PHP程序员主要是负责我们上面Data & PHP & Template 三层的代码编写,当然,如果项目足够庞大,完全可以拆分出来,有PHP程序员负责Data层,有PHP程序员负责Php和Template层,分工清晰,Php层程序员只是需要调用Data层程序员已经写好的类库进行调用,不用关心类是如何实现的。

这样一个项目架构下来,可以按照任务需要来安排某个模块的人的数量,最大限度的把项目规划好。当然,项目中一些必要的因素是要考虑的,比如,如何让网页制作人员、客户端脚本程序员和PHP程序员良好的合作,那么就是分离他们的责任,比如,模板页必须由PHP程序员来编写,然后提交给JavaScript程序员制作客户端脚本,最后再由网页制作人员通过CSS来控制布局,那么Php程序员在模板页中就必须使用div等标签来定义一个块的数据,如果任何一块出了问题,那么对应找相应责任人,就能够很好的避免彼此推卸责任,或者权责不分的情况,这样有利于管理,也有利于每个开发成员之间的良好合作。

为了防止项目失控,或者不会因为项目成员的离开而影响项目的进度和管理,必须有相应的方法和规则。我们主要针对PHP程序员来进行描述,部分方法同样适用于网页制作人员和客户端脚本程序员。


(1)编码规范

项目开发中为了便于维护和以后其他人接手代码,必须统一编码规范,包括对目录、文件名、类、函数、变量、注释等等都必须遵循标准,而且为了代码的维护,必须要求PHP程序员编写注释。目前基本遵循的是Fredrik Kristiansen写的《PHP 编码规范》,或者是PEAR中代码的规范。
如果代码为了做成接口,或者需要做成参考的文档方便以后维护代码,使用phpDoc等工具,那么为了能够使用PEAR包中的phpDoc能够正常识别,所以一般建议遵循PEAR包的规范,主要是DPT模式中Data层中类的的编码必须规范。

PEAR中pear.php中基类的部分代码:

class PEAR
{
    /* 属性的描述 */
    // {{{ properties

    /**
     * Whether to enable internal debug messages.
     *
     * @var     bool
     * @access  private
     */
    var $_debug = false;
   
    //其他属性省略...
    // }}}


    /* 对方法的描述 */
    // {{{ constructor

    /**
     * Constructor.  Registers this object in
     * $_PEAR_destructor_object_list for destructor emulation if a
     * destructor object exists.
     *
     * @param string $error_class  (optional) which class to use for
     *        error objects, defaults to PEAR_Error.
     * @access public
     * @return void
     */
    function PEAR($error_class = null)
    {
//方法内部代码省略...
    }

    // }}}
}

对于上面内部标签的解释请参考文章结尾链接中的《php Documentor 1.2.2 使用说明规范》


(2)单元测试

单元测试是对程序进行的第一步测试,并且是程序员自己做的测试,没有谁比自己更了解自己写的代码,所以单元测试对保证程序的稳定性尤为重要。所以一般项目中,特别是写类库的程序员,一定要对自己写的代码进行单元测试,只要保证数据能够稳定的获取,才能保证Php层的程序员能够正确的获取数据。针对PHP的单元测试工具目前有SimpleTest和PEAR包中的phpUnit/phpUnit2,phpUnit2是针对PHP 5的测试工具,这个可以按照项目的实际情况来决定使用什么测试工具。SimpleTest和phpUnit的使用参考文章请参考文章最后的链接。


(3)程序安全

在今天这个黑客横行,SQL Injection泛滥的时候,为了保证程序能够正确完整的运行,那么就必须要求程序员对自己的程序进行安全的编码。

主要是两方面,一方面是服务器端的安全,主要就是要过滤用户提交的变量,记得网络上流行的一句话:“不要相信用户提交的任何数据”,因为你不能保证这个用户是恶意的还是善意,是普通用户还是黑客,所以不管是谁,一定要过滤掉它的变量,不过是通过GET方式还是POST方式过来的数据,统统过滤。主要是过滤一些特殊自如,比如/"'等等,保证服务器和数据的安全。

另一方面就是针对客户端的威胁,比如提交一些恶意的JavaScript代码,当普通用户查看该页的时候,那么将给对方带来影响或者伤害,那么会极大的影响网站或者软件的声誉,这是要避免的。同样的,这个也是要良好的过滤变量,如果无法在用户提交数据的时候过滤,那么就在显示输出的时候进行过滤,主要是过滤一些HTML标签和JavaScript代码,保证客户浏览的安全。

关于一些基本的安全问题可以参考文章后面的链接。


(4)代码同步(版本管理)

但一个项目是多人开发的时候,那么代码同步或者说是版本管理就尤为重要,因为为了保证每个开发成员的代码都是最新的,最稳定的,那么必须要使用CVS等版本管理工具,当然,你想使用VSS也无可厚非。一般建议是专门使用一台服务器来供所有开发人员开发,不建议把代码保存在开发人员的本地上,因为大部分人都是使用Windows等操作系统,如果发生病毒感染、设备损坏或者其他因素,那么代码将壮烈牺牲,这样造成又要重复开发的浪费,如果把代码直接存放在服务器上,一般服务器安装都是Unix/Linux系统,能够基本保证代码的安全和完整。

CVS的安装使用文章可以参考文章最后的链接。


(5)多模块通信

如果项目足够庞大,门户级的应用,那么肯定涉及到多栏目/模块之间的通信




六、结束语

DPT模式也许在很多项目中你已经应用了,只是没有认证的进行定义,如果阅读本文能够获得同感,或者恍然大悟乃至垂手顿足,那么我想本文就给了你一定帮助,这就足够了。

写作文章前前后后花了快一个月,只是一直太懒惰,怕的写的不好,怕这个东西出来没有意义。。。但是不管如何,还是写出来了。

如果可能,尝试考虑把你的PHP应用移植到PHP5上,也许,那才是你需要的。


Writer by heiyeluren <heiyeluren_AT_gmail.com>
2005年8月29日 下午 17:38



>>>>>> 附录:(文章相应链接)<<<<<<

PEAR     http://pear.php.net
Smarty     http://smarty.php.net
phpUnit    http://phpunit.sourceforge.net
SimpleTest    http://simpletest.sourceforge.net | http://www.lastcraft.com/simple_test.php
phpDocumentor    http://www.phpdoc.org

《PEAR:创建中间的数据库应用层》  http://www-128.ibm.com/developer ... hp/pear4/index.html
《模板引擎SMARTY》   http://www-128.ibm.com/developerworks/cn/linux/l-smart/index.html
《MVC模式、类封装还是黑客代码》  http://www-128.ibm.com/developer ... p_design/index.html
《PHP中的代码安全和SQL Injection防范》 http://blog.csdn.net/heiyeshuwu/archive/2005/06/14/394225.aspx
《在PHP中使用SimpleTest进行单元测试》 http://www.hsboy.com/blog/archives/90-PHPOESimpleTesta.html
《用phpUnit帮你调试php程序》  http://www.ccw.com.cn/htm/app/aprog/01_4_13_4.asp
《php Documentor 1.2.2 使用说明规范》 http://www.phpx.com/happy/top98827.php
《PEAR:使用PHPDoc轻松建立你的PEAR文档》 http://www-128.ibm.com/developer ... hp/pear3/index.html
[http://www.phpres.com]
《PHP 编码规范》    http://www.phpe.net/html/php_coding_standard_cn.html
《CVS使用手册》    http://www.chedong.com/tech/cvs_card.html

标签: 设计模式 DPT
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
发布者资料
掂量 查看详细资料 发送留言 加为好友 用户等级:高级会员 注册时间:2009-01-05 00:01 最后登录:2010-01-12 12:01
推荐内容