首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MVC 模式、类封装还是黑客代码 合理设计 PHP 项目-实例涉及大量商业逻辑项目-3

MVC 模式、类封装还是黑客代码 合理设计 PHP 项目-实例涉及大量商业逻辑项目-3

关于 View最后说到的是 View 方面,虽然这部分内容与网页设计人员联系比较紧密,不过 PHP 项目(以及其他 Web 项目)的系统分析员也必须关注这一话题。可以看出 MVC 模式的应用使得网页开发人员和程序设计人员的各自工作成果不会像以前那样互相影响,自然可以提高各自的工作效率(相互关系也许会比以前更加融洽一些)。但是对于系统分析员来说,将用户界面分离为各个独立的网页模板需要进行许多分析工作。
首先是确定整个系统的流程,这一点在系统设计的初期就应该做到。而对于 View 视图 / 界面和 Controller 控制 / 流程来说,所有需要的页面都是围绕此流程产生。不过通常此时能够在流程图上看到的也许只是相关的参数在各个页面之间传递,却不能了解各个页面展示的内容 -- 这就是下一步分析用户界面需要进行的工作。
在分析用户界面的工作中,第一步可以确定各个页面核心、对于完成流程必不可少的用户界面元素(表单和表单域、链接等);第二步是确定页面中需要出现的导航内容;最后还需要依据流程复核。还是以上文的用户登录为例。对于 /member/login.php 这个关键的页面,第一步可以确定的是在用户提交之前应该显示一个表单,表单包含两个文本框供用户输入用户名称和密码;而提交之后根据流程在本页面中不需要有用户界面,取而代之的是利用 Controller 控制 / 流程这一逻辑层进行重定向。而第二步需要制定该页面中(准确说是在显示登录表单时)需要提供的导航链接,在这里可以加上到系统的主页或者其他非注册用户页的起点的链接(方便用户临时决定取消登录)以及一个注销现有用户的链接(针对已登录用户)。之后进行复核,此时也许会发现这一设计似乎没有考虑到在登录前更好的区别是管理员登录还是普通用户登录,那么就可以在表单中增加一个隐藏域表示选择登录的用户是准备以管理员还是普通用户的身份进行登录。
确定完用户界面的元素,并不意味着可以将这些分析结果交付网页设计人员进行制作了;还有最关键的一步没有实施 -- 为分析完成的各个页面制定模板所需的变量名称。对于以上的用户登录实例,如果系统有识别曾经登录用户的功能(依据之前访问时在客户端设置的相关 cookie 值)并且把这个用户名称显示在登录表单的用户名称一栏,此时就需要在 member_login.dwt 设计中说明该表单域将被赋值为一个模板变量(比如 {USERNAME})。这一步骤完成之后就可以交付网页设计人员进行制作了。
需要指出的是,在编码阶段很可能局部的一些系统设计需要进行修改,这其中也许就包括对网页模板的修改,需要仔细处理。
对于代码组织的补充说明还有几个文件和目录没有在上文提及:
  • config.inc.php -- 如果您熟悉 phpMyAdmin 或者其他 phpWizard.net 释出的项目,就应该非常清楚这个文件的作用:定义本项目范围内的全局变量(在每个页面中被 include)。我个人认为这是一个非常良好的设计,因此也提倡在项目中应用。另外,为了保证与项目中其他的变量冲突,建议在该文件中定义一个多重数组,而各种全局变量都以该数组的某一个值出现。这样方便团队中的其他开发者只需要避免一个变量名的使用,而不是避免所有 config.inc.php 中出现的变量名。使用这个文件的另一个好处是由于将关键的变量(比如与服务器环境相关的变量)集中定义,可以方便的安装和移植整个项目。
  • security.inc.php -- 顾名思义这个文件控制并实施整个系统的安全策略。关于安全问题,可以想到的是两种控制方案:在每个控制流程页面顶端针对本页面加以控制以及采用一个控制文件整个控制并被加入每个控制流程页面。我个人提倡采用后一种方式,原因也很简单:定义简单而且维护方便。虽然相比每个页面单独定义,也许会损失一点点效率(一些不需要安全控制的页面也需要 include 该文件并进行判别),但是获得的是对系统安全的整体控制以及代码维护的便利(损失一个 if … else …的判别换取这样的结果还是很值得的)。
  • /Temp -- 很明显存在于这个目录下的都是一个临时文件,并且这个目录其实并不会出现在项目正式发行的版本中。如果开发时对一些函数的使用不甚明了或者试验一段没有相关经验的代码,都可以在此目录下建立文件;因为该目录就位于项目代码之中,可以非常便利的取得项目运行的上下文环境,大大降低了试验代码的成本。
  • /admin -- 通常对系统的后台管理内容应该放置在一个独立的目录中,我个人比较喜欢 admin 这个简写词(当然也有一些情况系统分析员认为不应该设置一个容易猜测的管理目录名称以增加一重对系统安全的保护)。
  • /css 和 /scripts -- 都是与网页设计也就是 View 视图 / 界面有关的文件存放处,分别是样式单和客户端脚本。这样做的好处在任何一本讲述网站规划的书籍中都会有所提及。
返回列表