前言
您参加过 PHP 会议吗? 如果没有,我强烈推荐它,它是您最接近生机勃勃的 PHP 社区的地方。几周前,我从伦敦飞往密苏里州圣路易斯,在 php[tek](由 php[architect] 主办的 PHP 会议)上发表演讲。会议结束后,PHP 社区内有一个名为 WurstCon 的小传统。本质上,数百名 PHP 会议与会者挤进一家小热狗店并举办热狗大会,这常常让那里的工作人员大吃一惊。同样,PHP 活动中的社区之夜是您遇到过的最温暖、最容易接受的社区活动;PHP 社区无疑是其他开发语言社区羡慕的社区之一。
从 PHP 7 开始,PHP 项目发生了翻天覆地的变化,但我所热爱的东西依然强大。在任何一次 PHP 会议上,你都能感受到 PHP 的热情、文档的开放性和语言的采用性。是的,PHP 本身无疑有一些不好的做法;但是,想想 PHP 社区最近取得的成就,从 PHPUnit 到 Composer,不一而足。在整本书中,请记住 PHP 7 中的改进,我将与你分享其中的一些。现在,项目的发展轨迹无疑是向上的,但我们不要忘记,情况并非总是如此。PHP 社区已经吸取了过去的教训,而 PHP 语言则保持了编写不良内容的灵活性。
本书将向你传授强大的软件工程技能,重点是在 PHP 中实现这些技能。在本书出版之际,这类资料存在一定的空白和必要性。本书力图成为一座灯塔,不仅展示软件设计理论,还力求传授具有实际价值的实用信息,以提高所编写代码的质量和可维护性。本书在软件开发的整个周期中不遗余力,力求直面大多数软件项目失败的原因,同时也探讨了设计、重新设计和保护有效代码的问题。
本书超越了 "四人帮" 所设想的传统设计模式,详细介绍了充满激情的 PHP 开发人员作为软件工程师或详细 PHP 项目的负责人取得成功所需的实践。本书将向你介绍理解项目管理技术所需的核心知识、大多数软件开发项目失败的原因,以及为什么你能让自己的项目取得成功。
最初,我考虑写一本关于 PHP 的书时,曾与我共事过的曼迪-罗斯(Mandi Rose)建议我写一本关于我所学到的 PHP 实践的书。不用说,在提出这个建议的时候,我的职业生涯无疑正处于最辉煌的时期;当真正有机会写这样一本书的时候,我觉得随着时间的推移,我学到了更多的东西。你绝不应该把本书看作是 PHP 实践的全部和终结;相反,你应该用它来增加你的 PHP 知识基础,但绝不应该仅限于此。在本书中,我的目标是回馈 PHP 社区,无论多么微小;读完本书后,我鼓励你投入其中,与他人分享你所学到的知识。
在本书的后面部分,我将倡导把极限编程作为一种方法,并把勇气作为这种方法的一个关键价值。请大家牢记《极限编程的价值》中对勇气的解释: "我们会如实反映进度和估算。我们不为失败找借口,因为我们计划成功。我们不惧怕任何事情,因为没有人是独自工作的。我们会随时适应变化"。当然,这也是我们都应该遵循的一些重要建议,并寻求真正理解风险,而不是畏缩不前。对于我们中的许多人来说,在职业生涯的某些阶段编写的代码是我们劳动的最高体现。事实上,我们花在调试和开发上的时间从深夜变成了清晨,正是这些时间最终让我们展示了自己的劳动成果。从本质上讲,作为软件工程师,我们编写的代码决定了我们的身份,因此,我们应该以开放的态度不断完善和重构我们的流程,而这正是本书的目的所在。你们选择让我来帮助你们实现这一目标,我感到无比荣幸。
章节简介
第 1 章 为什么说 '优秀的 PHP 开发人员' 不是一个贬义词,介绍了设计模式的概念,即针对常见问题的重复性解决方案。
第 2 章 反模式,介绍了模式如何会导致明显的负面后果。
第 3 章 创造性设计模式,讨论了 "四人帮" 设计模式,即围绕对象创建的设计模式。
第 4 章 结构设计模式,介绍了如何将多个类和对象组合起来,以提供更清晰的接口。
第 5 章 行为设计模式,介绍了如何通过识别有助于对象间通信的模式来提高对象间通信的灵活性。
第 6 章 架构模式,围绕解决与网络应用程序/系统架构相关的常见问题展开,这些问题可能在代码库本身之外。
第 7 章 重构(Refactoring),介绍如何重新设计已编写的代码,以提高可维护性。
第 8 章 如何编写更好的代码,涵盖了一系列其他地方未曾讨论过的概念,最后还为开发人员提供了一些建议。