快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

用封装类来合理的设计PHP项目--谈PHP项目中类的封装

编码对于合格的PHP程序员来说并不是什么难事(也许只是花费时间长短的问题),因此系统分析和设计这一阶段就显得尤为重要。不过本文并不打算讨论和需求分析、获取商业逻辑相关的话题,而是针对系统设计方面进行探讨。

面临难题
编码对于合格的PHP程序员来说并不是什么难事(也许只是花费时间长短的问题),因此系统分析和设计这一阶段就显得尤为重要。对于一个担任PHP项目的系统分析员来说,面临着两个难题:

  1. PHP语言本身的限制。
    这一点在复杂系统的面向对象设计中尤其显著。PHP的面向对象特性在现有版本中虽然得到了改善,但是还不甚健全,根本不足以担任面向对象设计的实现语言;即使眼光长远一些,在即将释出的以Zend Engine 2.0支持的全新PHP中,面向对象特性也不会像现在流行的Java或者C++那样(关于这方面的内容可以参见我在developerWorks中国网站发表的另一篇文章)。但是假如采用完全面向过程(正确说是面向Web页面)的方法,可以想见整个系统的设计会异常复杂,而由此带来的编码复杂和维护困难更加难以应付。
  2. 现有资料的严峻缺乏。
    这是众所周知的现象即针对Web项目的系统设计资料不足;而在这些有限资料中,关于PHP的设计资料又异常匮乏。假如本公司或本人也没有相关的技术积累,系统分析员只能在黑暗中摸索方式(更坏的两种情况,一是照搬其他项目比如Java或者C++的设计,二是认为项目简朴而不负责任的草草了事)。


熟悉面对的系统
既然如此,采用何种方式妥善处理PHP系统的分析和设计?最初的构想应该需要分清项目承担任务的类型:

  1. 涉及大量客户本身或者客户所在行业的商业逻辑的项目,包括办公系统、订单系统以及其他商业系统。
  2. 简朴网站项目,包括一些需要承担高访问量或要求迅速响应的项目比如品牌网站或者活动网站以及其他一些网站。
  3. 综合性网站项目。通常包含多个相对独立的子系统比如新闻子系统、论坛子系统、产品陈列子系统等等。


PHP的设计初衷在于解决后两种项目的迫切需求,语言本身对于这些项目进行了良好的改造。而众多的PHP开发者对这些项目也具有或多或少的经验,相关书籍中的范例也大都围绕于此。相对说来第一种系统所有的资料不多,各种出版物对其内容也很少提及。因此在本文中将题所述对第一种类型的项目进行具体讲述(有关MVC模式和类封装),同时附带提及第二种项目(有关黑客代码)以及第三种项目的设计方式。当然,并不是被归类的这些项目就只能采用本文描述的方法,系统分析员需要权衡各方面因素加以选择。

方案一:涉及大量商业逻辑项目
如何分离用户界面和后台操作?如何避免将商业逻辑混淆于一般的流程控制中?作为一个严谨的商用项目,就需要考虑很多类似的问题。对于由PHP担当的这类项目,贯彻Model-View-Controller(MVC)模式的设计是一个异常好的方式。

理论描述
在这里我不想多加解释MVC模式本身--简朴的从字面上以及应用上说,通过将系统的设计分为Model模型/逻辑、View视图/界面、Controller控制/流程三个逻辑部分达到良好的项目效果,以此便利各部分开发者的工作并降低日后的维护成本。(假如您认识JSP开发的Model 2模式,可以发现它也是MVC模式的很好体现。)就现实的项目开发而言,现存的很大问题包括网页设计人员和程序开发人员的工作交错和冲突以及商业逻辑嵌入页面造成不可重用也很难维护等等。引入MVC模式一方面可以为系统的总体设计指出明确的方向,对于开发团队的分工也是良好的指导。

既然依照MVC模式要求对系统的总体结构在逻辑上分成三部分,那么团队的开发者中也存在着针对各个部分的开发者。

开发者角色
返回类别: 教程
上一教程: PHP应用程序加速探索之简介
下一教程: 提升PHP执行速度全攻略(上)

您可以阅读与"用封装类来合理的设计PHP项目--谈PHP项目中类的封装"相关的教程:
· 用封装类来合理的设计PHP项目--谈PHP项目中类的封装
· PHP中类的理解和应用[二]
· PHP中对数据库操作的封装
· PHP中类的理解和应用[一]
· 类的另类用法--数据的封装 
    微笑服务 优质保证 索取样品