首页 后端开发 php教程 用PHP开发健壮的代码一高屋建瓴的介绍_PHP教程

用PHP开发健壮的代码一高屋建瓴的介绍_PHP教程

Jul 13, 2016 pm 05:29 PM
php 介绍 代码 关于 开发 文章 系列 解决

用 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 就不能容许这样做了。您应该高速缓存那些使用频繁的页面。高速缓存使您的应用程序速度更快并且减少了服务器上的负载。 确保您的代

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/531720.htmlTechArticle用 PHP 开发健壮的代码 系列文章是关于解决大中型应用程序中的实际问题的。这一系列文章主要侧重于 PHP 4 中可用的新功能,重点介绍了大...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1667
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1255
24
PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP与Python:了解差异 PHP与Python:了解差异 Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

See all articles