下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 很早就想写这篇文章了,但一直没有时间完成它。不是说我来告诉大家如何做,我更希望本文只是做为一个引子,与大家来讨论关于如何建立一个有效地、灵活的网络应用程序。 经过了23年的网络应用程序开发工作,我的开发经验变得更加生动了,回过头来看我以前为Geocrawler写的代码,简直不敢相信这是我的。由于GPL的原因,在PHPBuilder中的源码也是良莠不齐的。 最近我做为一个有经验的PHP开发者,一直在帮着写SourceForge,我想这显示出了最终结果的一个范围。好的代码应被分成了多个部分,合适的库及
2、函数调用,清楚的数据库结构,站点的每一个部分与其它部分都是相对独立的。 但是,这仍不是最好的。如果我可以重做,我将更多的关注于HTML层与数据层的分离,通过对象及清楚的函数库实现这一点。 优美的图形 我知道经理们喜欢用优美的图形及图表来描述它们,这将给我们留下最好的印象。用这种隐藏在一个结构后的想法,你可以把你的逻辑与外观分离,这意味着任何一个复杂的程序都可以用"API/Data Access Layer"来表述。 与其你把安全检测、更新的句子等放在HTML层中,不如把它们整体地放在你的API层里。而这个HTML层只含有简单的函数调用和返回的数组、对象或自定的其它什么,以及
3、一些数据库的检索结果的集合等。 如果你这样做了,顶层将是非常的瘦小,你可以方便地创建及维护它。 如下的例子中,这个HTML接口中只有一些API层中的函数的直接调用,一些HTML工具库(它能生成一个弹出框等等),和一些从数据库抽象层中调用的数据库操作方法(你不需要绑定某一个特别的数据库)。基础 灵活的PHP程序结构最基本的方面有以下几点: 数据库无关性 界面无关性 可移植性 面向对象或至少应由函数库组成 还有其它的? 当然还有一些其它的东西,但我认为那都是太大了,或许你自己能指出它们。 让我们详细地谈谈它们每一条吧。 1、数据库无关性 你从不知道你的站点将会在哪里运行,当然在你创建它时,你希望它
4、变和得很大并且有很高的流量。所以你不想把你自己约束在 MS Access 上面或者其它什么轻便的数据库系统。虽然你不能立刻地插入各种不同的数据库系统,但是你有可能很方便地在它们中间切换。你有一些不同的选择可以把你的数据库调用抽象出来。在PHP中一个奇特的方法是你不得不为每个不同的数据库系统写出不同的代码,因为在PHP中对每一种不同的数据库的访问函数是不同的。为了避开这点,你可以使用一个抽象地数据库访问层,就象PHPLib、下一个版本的PEAR、及我们在SourceForge中描述的那样。 2、界面无关性 一个应用程序是它的技术更重要还是它所运行的站点更重要?我们并不能真正地知道。我从来不相信这
5、一点HTML是一个标准。特别是对于一个网络应用程序而言,界面发生了改动,意味着我们不得不总是重写。但是如果你的应用程序是很大很复杂的,你就要为你的数据库建立一些其它的接口了,只要你不想在你的站点程序中到处copy&paste你的访问检查等代码。这也意味着,如果你正确地设计了你的应用程序,你可以很容易地改写你的站点让它适应WAP,只要简单地写一个小的WAP界面,并让它调用你的数据库访问对象而已。但若你没有很好地设计你的程序,你把你的HTML版改成WAP版是一个复杂的工程。 我把这个想法也带入了SourceForge中,我们有一个巨大的用户群,为我们发送/接收bugs、任务等。首先,我们指
6、出所有的这些将通过我们的web页面接口,然后,由于Eric Raymond 和其他人给的压力,我们决定用XML来做数据库的外部接口。 幸运的是我们曾在四月已把程序的核心逻辑代码与它的界面分离了。我将试着表达我们是如何做的,希望对你的工作有所帮助。 这个SourceForge的bugs跟踪器和其它的一些工具被分成两个库这个HTML库和数据访问库。这个数据访问库检查输入的值的正确性,处理安全校验,并且当成功/失败时返回TRUE 或 FALSE。 由于简化的原因,这个例子并没有基于一个完善的对象模式,那样我还要解释这个基类和它的一些衍生类等等,我想这个例子将给你一个最普通的想法。HTML 库的例子
7、/connect to database require ("database.php"); /common utils like header/footer HTML require ("html.php"); /data access library require ("bug_data.php"); echo site_header("Page Title"); echo " Updating A Bug " if (bug_data_update($field1,$field2
8、,$field3) echo " Update Failed!" else echo " Updated Bug Successfully" /echo the global error string echo $feedback; echo site_footer(); ?> Data 访问库的例子 3、可移植性 毫无疑问,你不想让你的代码只能用于一个固定的站点,将来我们可能改变色彩的选择、元素的名称、字体或其它一些什么,这样应设置一个config文件,它被多个页面所包含。更好的观点是你的站点被模块化,你不需要copy&paste任何一个HTML文件,我倾向于把这些放入一个函数,在任何需要的地方调用它们。 同样的方法可用于数据库的密码、数据库连接字串等,这些可以放入一个数据库处理的抽象层中。 4、面向对象/函数化 我们不是用COBOL开发,所以这意味着我们可以把进程分成多个函数的调用。每个调用都是一个自动的行为,有时仅仅是调用一小段其它的函数并返回这个结果。 一个好的例子是在每一个页面校验用户是否登录,你可以用cookie或查询数据库来完成这个功能,但一旦你想改变你的验证系统,你不得不改动每一个页面,其实你应该可以通过改动函数库里一个普通的函数就完成这个变动的。任何时候,你写一段代码,如果它将会被用于多于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试备考题库(浓缩500题)含答案详解(轻巧夺冠)
- 国家管网集团山东分公司2026届秋季高校毕业生招聘笔试模拟试题(浓缩500题)带答案详解
- 2026年驻马店市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)带答案详解(完整版)
- 2026国家管网集团校园招聘(河北招17人)考试参考试题(浓缩500题)及答案详解【网校专用】
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试备考试题(浓缩500题)及参考答案详解(夺分金卷)
- 2025国网湖北省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及答案详解(考点梳理)
- 2026届国家管网集团高校毕业生招聘笔试模拟试题(浓缩500题)附参考答案详解(b卷)
- 2026秋季国家管网集团西北公司高校毕业生招聘考试参考试题(浓缩500题)附答案详解(完整版)
- 2026秋季国家管网集团广西公司高校毕业生招聘考试备考试题(浓缩500题)及参考答案详解一套
- 2025国网海南省电力校园招聘(提前批)笔试模拟试题浓缩500题含答案详解(基础题)
- 环境工程可行性研究报告内容及编制要求
- 2025年成考语文试卷及答案
- (完整版)2025年全国自考《马克思主义基本原理概论》真题及答案
- 京东考试答案
- 铁路客车空气制动装置单元制动缸检修标准
- 执业医师考试笔记全
- 村扶持村集体经济发展试点项目资金参股企业协议书
- bras扁平化方案竞争分析-材料
- 大垛体育、艺术2+1活动方案及评价标准
- 民营医院的聘用合同
- 偏心测试工艺介绍
评论
0/150
提交评论