飘灵儿 发表于 2015-2-4 00:20:28

PHP编程:用 PHP 开辟强健的代码(一):高高在上的...

你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。   用 PHP 开辟强健的代码 系列文章是关于处理大中型使用法式中的实践成绩的。这一系列文章次要偏重于 PHP 4 中可用的新功效,重点引见了大批使开辟任务更轻易的技能和诀窍。在这一系列文章中,您将发明很多要进修的示例和手艺,还附带了大批样本代码。在这第一篇文章中,PHP 高手 Amol Hatwar 从更高的角度引见了若何为中到大型 Web 使用法式设计和编写无毛病、可保护的代码。
假如您是一位构建 Web 使用法式的开辟者而且需求速度、功效战争台自力性(platform-independence),那末 PHP 将合适您。并且 PHP 是收费的,易于进修和安排。这些是使 PHP 如斯受接待的最大长处。但这些长处也能够酿成弱点。因为 PHP 易于利用,所以开辟者在本应计划和设计的时分,他们常常先把代码硬塞到编纂器中。并且,在 PHP 中,处理成绩的办法不止一种,对照轻易犯那种惨重的毛病,这类毛病事后难以修订。

在这一系列文章中,您将学会若何防止很多毛病。假如您一步不落地保持究竟,您会发明本人测验考试一两次就可以编写无毛病的代码了,对此不要感应奇异。我还会指出 PHP 4 中可用的新功效,它们使开辟任务更轻易。我要引见的大多半示例都是用来处置诸如剧本设置装备摆设和装置、文件处置和数据库利用之类的实践成绩。即便您对这一切都不熟习,您也会发明了解起来很轻易。不外,我假定您对 PHP 有初步的懂得。假如您需求从头复习,您会发明本文开头地方列出的参考材料会对您有所匡助。(请参阅参考材料。)

奠基强健的基本
用 PHP 编写代码与用相似 C 的言语编写代码十分类似。因为它们句法上相似,所以还会招致相似的代码保护成绩。当必需开辟大型使用法式时,您能够要编写大批代码。跟着工夫的流逝,这些代码能够变得难以办理,毛病很快就会浑水摸鱼。不管您从哪里听到这类说法,都不要信任 ― 最少不克不及全信。然而,更主要的现实是假如您发明本人保护代码过于频仍,那末起首您的使用法式的设计多是很糟的。

准确地设计代码
您最后做出的选择会影响您今后编写代码时的自在度。这使得准确的设计成为一个主要的先决前提。固然当您处理一个微乎其微的成绩时设计会成为一个额定的典礼,然而您最少必需晓得就是应当如许做的。很多人把设计和计划看做额定的开支。然而以糟的设计入手下手,或基本就没有设计,了局老是会形成轻率的代码。请记住,再奇妙的编码也不克不及填补糟的设计。固然若何设计使用法式超越了这个系列文章的范围,但我仍是会提醒一些设计 Web 使用法式时应当切记的成绩。

朋分和降服
经由过程一个个较小的松懈耦合的部件来设计和编写大型使用法式老是更可取的。如许,每一个部件都是可保护的。例如,一个内容办理体系(Content Management System,CMS)能够散布在很多诸如用户认证、显示、内容解析和检查统计信息等较小的模块上。并且,假如您的模块足够通用的话,您可以在您开辟的其它使用法式中重用代码。法式员常常这么做,但他们依然埋怨。至于编码的技能就是让每一个模块具有它相对需求的功效而且到此为止。付与一个模块的功效要不多很多,恰如其分。

相对不要在页面中思索
假如您对用 PHP 将您的 HTML 页面变得更静态些感乐趣,这局部将合适您。当您想在每一个页面上显示日期和工夫以使其看上去是最新的时分,凡是是这个习气入手下手的时分。每一个 HTML 页面都酿成一个只要无限几行的小 PHP 剧本,日期函数埋没在某个中央。假如这是您想要的,您必需承认这是使该功课完成的最复杂的体例。然而,想象一下您必需做些甚么变化才干改动页面上出现的日期格局。您将不能不更改每一个页面内的代码。

明显,有更好的体例来到达这个目标。我最喜好的体例是利用设置装备摆设文件并在设置装备摆设文件中界说一个常量,这个常量保存 date() 函数的格局字符串。然后,您就能够在需求的中央利用 date() 函数了。每一个页面仍以剧本停止,然而您要完全地把那些您必需对单行代码作更改的中央降到起码。

图 1. 防止硬编码




如上图所示,您在一切页面上都能看到日期格局的更改。这里的设法就是要防止复制代码和硬编码。在编写大型使用法式时,请切记这一点。当您防止了复制代码时,调试和保护就变得加倍轻易了。

削减客户机端请求
Web 页面和使用法式的类型已向多偏向开展了。起首是图象和图象映照,然后是完成很酷的动画的 Java applet 和客户机端剧本。如今是 Flash。有影响是功德情,然而您必需记住 Web 面前的全体思惟是使任何需求信息的人都能随时会见这些信息。假如您利用并不是一切阅读器战争台都撑持的手艺,就会回绝人们会见您的信息。您永久不晓得不克不及会见您 Web 站点的人是不是原本可以成为您的下一个客户!

您的使用法式设计应当尽量地将收集流量降到最低。咱们常常看到很多网站会见量过量而且只给阅读器一类仅能使其运转的 cookie。改动大批 cookie 不但损耗带宽,并且还使得很多方面难以办理。依据经历,假如您的使用法式发送超越 40 KB 的数据或假如您的页面需求多于 5 秒的工夫来装入,那就该从头设计使用法式了。遍地的小调剂不会延续太久。假如您各处看看,就会发明最受接待的、会见人数最多的站点都长短常复杂的。

您还应当思索下一波挪动装备和它们会见您的使用法式所用的毗连。最好的做法就是,您的使用法式必需依据恳求内容的客户机对内容停止调剂。Leon Atkinson 在他的 Core PHPProgramming 一书的第 720 页中说到,“咱们可以想法将 HTML 文档的巨细掌握得较小,而且咱们可以想法防止诸如嵌套表(nested table)如许的庞杂的 HTML,然而咱们不克不及对每一个人的 28.8 调制解调器都停止晋级。”

把代码、内容和显示分隔
HTML 是显示内容的标志言语,PHP 是嵌入 HTML 的剧本言语。这的确使复杂的义务变得轻易 ― 例如,以日期为例。不外,当您要完成庞杂的请求时,将 PHP 嵌入 HTML 使代码的复杂性尽掉。尽量地把代码、内容和显示分隔,这很好。思索一下您正在浏览的这个文档。这个文档入手下手被创立为一个 XML 文件。HTML 和 PDF 版本是用款式表主动生成的。代码(向您显示该页面的使用法式)、内容(XML 文档)和显示(款式表(style sheet))是分歧的。

正象将中心功效封装在模块中和防止代码复制很主要一样,用独自的内容源代码和依照请求的体例显示内容也很主要。您依据客户机和毗连速度定制页面的天真性也增添了。同时使法式员、设计师和作者彼此自力任务 ― 假如您正在处置一个大型项目,这是一件功德。

不关键怕丢弃设计
不管他人告知您甚么,理论才是进修使用法式设计的最好体例。假如您方才起步,能够会犯很多毛病 ― 这就是进修办法。糟的设计应当被丢弃。这就是您必需坚持代码、内容和显示松懈耦合的缘由 ― 丢弃糟的设计成为加重疾苦的手腕。当您抛弃陈腐的代码,以更好的代码取而代之的时分,您可以保存内容和显示。

如今,回到我所许诺的成绩上,使您的代码强健起来。您必需一向记住您的代码将为其别人的内容和显示供应力气。假如您的代码不克不及胜任的话,其他部分再多惊人的勉力也不克不及填补这个缺点。

编写强健的代码
假定您的代码请求不变,您将不会分明地发明更改代码的需求。除偶然需求最优化和改善以外,您的代码应当像加了光滑油的机械一样运转。

听上去很坚苦?现实并不是如斯。坦率地说,编写强健的代码其实不需求天赋。您只需求在拿禁绝的时分问本人一些恰当的成绩,如许就不会偏离正轨:

它平安吗?
它复杂且易于了解吗?
它是平台自力的吗?
它足够快吗?
回护您的代码
任何使大批用户写意的体系都必需是平安的。虽然 PHP 自己不容易遭到黑帽(black-hat)黑客的进击,然而您不要太一定。在版本 4.2.2 之前的 PHP 4 有严重的平安性缺点。要一向确保在有恰当加密的收集上存储或传送敏感数据。这关于处置营业、存储信息(如信誉卡号码)和传输秘密数据的使用法式来讲更主要。

如今,很难信赖用户提交的数据。要确保对数据停止了验证并确保数据在利用前是洁白的。请切记,将您的 Web 使用法式放到因特网上就是向伟大的收集发布了您的体系、软件、数据和营业。

确保您的代码一向平安地运转。

坚持代码复杂
您的代码应当是易于了解、可读性好且文档优秀的。为了削减您熟习本人或其别人的代码所需的工夫,请在工程内一向利用公共定名和编码商定。请投入工夫以确保在需求保护代码时这些方面会有所报答。

您最好在编程时为代码创立文档。能为您解析一切的剧本并创立看起来整洁的 HTML 格局的文档的东西其实不存在。假如您改动了代码的行动,就要响应地改动文档。假如代码的文档并没有实践纪录甚么器材,那末具有如许的文档是没用的。

确保您的代码是备有文档的、复杂的而且易于了解的。从久远来看如许会有所匡助。

使代码是平台自力的
您必需处理的另外一个成绩是平台自力性。固然,为 Windows 上的 PHP 编写的剧本将对任何其它平台上的 PHP 起感化:PHP 就是如许设计的。不外,您依然需求当心对照小的纷歧致。例如,换行字符在 Windows 和 UNIX 中就以分歧的体例暗示。

您在会见资本(如位于 PHP 内部的数据库)时还必需利用抽取。例如说您的使用法式用 MySQL 作为数据库办事器来增添本钱。假如您决意今后具有一个功效更丰厚的数据库,您必需更改使用法式中的代码。对代码停止严重更改老是一个苦差事并且是一个易失足的进程。请利用抽取来隔离对易于更改的局部的改动。您不用从头编写全部使用法式。

确保您编写的是平台自力的代码。这使您的使用法式具有更好的顺应性和可伸缩性。

为速度构建
最初一个值得处置的要素是速度。当您的剧本从数据库中拖拖沓拉地选择大约 300 个条目并显示一个页面时,没有人情愿一向等下去。将 20 个了局放在 15 个分歧的页面(这些页面在用户的阅读器上疾速挪动和装入)上凡是是一个较好的主张。用户把更快的呼应工夫了解为速度。另外一个易犯的毛病是每次用户会见页面时都静态创立页面。这切实其实能确保您的站点老是最新,然而当用户数目增添时,PHP 就不克不及允许如许做了。您应当高速缓存那些利用频仍的页面。高速缓存使您的使用法式速度更快而且削减了办事器上的负载。

确保您的代码疾速运转。没人喜好守候。

总结
在这个系列的开篇文章中,您懂得了编写强健的代码要实践做些甚么事。假如您仔细进修的话,用 PHP 开辟大型使用法式一点儿都不难。现实上,很多用 PHP 编写的使用法式已轻松开辟出来了。同时,意想到您轻易失落入圈套中是很主要的。只需您停止了计划、把工作分化成很多小一些的义务而且准确完成它们 ― 几近没有其余甚么会障碍您了。

鄙人一篇文章中,您将学会若何高效力地利用变量和函数。我将额定向您展现若何用 PHP 中的变量和函数变一些戏法。咱们在这篇文章中计划了咱们要会商的次要内容。鄙人一篇文章以后,咱们将逐一会商这些内容 ― 能够乃至会腾跃着讲述。到时再会。

然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)

小女巫 发表于 2015-2-4 11:56:31

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

若相依 发表于 2015-2-6 17:03:26

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

不帅 发表于 2015-2-7 11:36:12

当然这种网站的会员费就几十块钱。

精灵巫婆 发表于 2015-2-22 19:18:17

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

变相怪杰 发表于 2015-2-28 08:46:14

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

谁可相欹 发表于 2015-3-9 21:48:35

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

分手快乐 发表于 2015-3-17 01:26:48

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

山那边是海 发表于 2015-3-23 12:10:17

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

老尸 发表于 2015-3-24 00:16:59

实践是检验自己会不会的真理。

海妖 发表于 2015-3-27 15:10:09

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

admin 发表于 2015-4-5 11:48:34

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

蒙在股里 发表于 2015-4-16 09:44:28

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

再见西城 发表于 2015-4-22 05:43:43

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

飘飘悠悠 发表于 2015-5-5 08:48:01

兴趣是最好的老师,百度是最好的词典。

小妖女 发表于 2015-6-4 23:31:21

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

若天明 发表于 2015-6-7 05:05:24

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

乐观 发表于 2015-6-7 06:21:34

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

愤怒的大鸟 发表于 2015-6-19 21:08:38

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
页: [1]
查看完整版本: PHP编程:用 PHP 开辟强健的代码(一):高高在上的...