内 容 提 要
本书是一本关于PHP 6的专业书籍,主要介绍了PHP 6所引入的一些新特性。本书的内容分为四个部分。第一部分:面向对象编程基础。该部分主要介绍了面向对象编程的基本概念,以及PHP 6是如何实现这些基本概念的,其中涉及到类、集合、UML图、设计模式以及PHP数据对象(PDO)等。第二部分:PHP6高级开发技术。该部分内容主要介绍了PHP 6中的一些高级技术,其中涉及对象关系映射(ORM)、事件驱动编程、日志和调试、编写Web服务、与用户通信等。第二部分的重点是介绍常用的应用程序体系结构MVC,以及相应的实现框架。第三部分:实际的案例研究。该部分在前两部分所介绍技术的基础上,通过一个现实的例子,研究了如何将这些技术应用于实际,并且讨论了质量保证和测试的重要性。第四部分:充分发掘PHP 6的潜力。该部分则讨论了PHP 6中的其他一些值得关注的主题,包括内容控制、高流量和高可用性的处理、职业生涯等。通过学习这些内容,在以后的开发过程中,您可以更好地实施自己的决策。本书的附录部分介绍了和PHP相关的部分内容,包括版本控制、集成开发环境(IDE)、性能调整以及环境安装等。本书适用于对PHP基本概念具有一定了解,并具有一定面向对象编程经验,想进一步学习PHP 6新功能的开发人员。
前 言 本书主要针对希望充分利用PHP 6发行版本中的功能以扩展和提高其开发技能的PHP开发人员。当然,这个目标并不是一成不变的,因为有经验的.NET和Java 2 Enterprise Edition (J2EE)开发人员也应该可以快速掌握本书所介绍的内容。但是,对于没有经验的PHP开发人员(或者其他没有软件开发经验的人员),强烈建议先阅读Beginning PHP 6, Apache, MySQL 6 Web Development(Wiley,2009)一书。 本书所涵盖的内容 PHP的优势就是它非常容易学习,并且学习曲线非常平稳。几乎任何具有基本计算知识的人都可以掌握它,并使用它建立简单的动态网站。实际上,也正是因为该特性,PHP已经成为了全球超过2000万个网站的后台技术,而且该数字每天还以数千的速度在增长。但是,特别易于学习使得PHP在开发方法上缺乏统一标准,并且可能缺乏行业标准最佳实践的运用。简而言之,大量的PHP代码都不够完善。 因此,本书所涉及的内容不仅仅是语法,而主要是为了帮助您在较短的时间内交付高质量的软件。如果曾经有人告诉过您PHP“不是企业级”的语言,不要使用该语言,那么本书也是针对您而编写的,因为您将了解到PHP是企业级的语言。您将在本书中所学到的很多知识都不限于PHP语言(尽管是以PHP 6为基础编写的)。很多开发技术都可以直接转换到其他传统的高级语言,并且您在本书中所学到的技能也会影响您未来的职业生涯。 本书的适用对象 本书涉及一些PHP的高级技术,因此本书假定您已经牢固掌握了实施PHP应用程序开发的基础知识。但是,一开始您并没有必要熟悉PHP 6。如果您在最近的PHP 6发布之前已经使用过PHP 5,那么可以阅读本书。整本书中都非常仔细地强调了PHP 6与PHP 5之间的差异。如果您仍然在使用PHP 4,那么也不要担心——您距离技术前沿并不遥远——只需要确保一开始就具备了所需的背景知识即可。 总之,本书假定您已经具有了一定的PHP工作知识。如果您具有PHP的工作知识,并且渴望了解如何才能成为一名真正的PHP专家,那么本书就适合于您。 您可能是某个大型软件公司的Web开发人员。您的公司可能已经使用PHP多年,或者公司可能希望尝试不使用.NET、Java和其他的Web开发平台,而尝试发掘与PHP相关的一些优点。 您也可能是另外一家非技术公司的唯一(或“几乎唯一”)的Web专家,负责实现某个大型项目(可能是一个员工内联网应用程序或者新的公司网站),并且正在寻找合适的开发平台。 您也可能只是好奇。也许您仅仅是某个大学或学院中的一名学生,希望再学习一些课外知识,即学习一些可以直接应用于商业Web开发中的专业编程和项目管理技术。 您可能具有.NET或Java的开发背景,并且可能听说过PHP的一些优点,也知道PHP的最新版本已经成为了一个名副其实的专业Web开发环境。也许您是一名怀疑论者,希望查看您所听到的关于PHP 6的传闻是否真实。 不管您属于哪种情况,只要了解PHP的基础知识,并且渴望从不仅完全了解PHP,而且喜欢使用PHP并通过使用PHP获得收益的人处理解PHP的完整技术,那么本书就适合于您。 使用本书的要求 为了最好地掌握本书内容,至少需要具备以下条件: ● 一个开发工作站(运行Windows、Mac OS X或者Linux,其中具有基本的文本编辑器或者您所选择的开发环境),以及一个运行例子的Web浏览器; ● 安装了PHP和Apache,并且需要按照附录D中所给出的详细步骤对PHP和Apache进行简单设置; ● 本书中的大部分例子还需要安装与PHP数据对象(PHP Data Object,PDO)兼容的数据库——所有例子均是针对MySQL或者PostgreSQL编写的。 理想情况下,还应该尝试具备以下条件: ● 一个Internet连接,因为本书使用了大量的URL,并且无疑您希望查看这些链接; ● 大量的空闲时间、开放的思维并乐于尝试新事物。 本书的组织结构 本节将给出本书的基本结构,查看本书目录可以了解更多详细内容。尽管在需要时可以随意地翻阅这些章节以了解关于某个主题的内容,但是如果您对面向对象编程(OOP)开发并不熟悉,或者更重要的是不熟悉OOP在PHP 6中是如何实现的,那么您应该从第Ⅰ部分开始阅读本书。本书的其余部分从头到尾都使用第Ⅰ部分中介绍的基础技术,因此在尝试学习一些比较高级的技术之前,掌握第Ⅰ部分中介绍的OOP基础知识是非常重要的。 第Ⅰ部分:专业开发基础 本部分首先给出了基本的OOP概念,包括这些概念背后的理论以及它们在PHP 6中的实际应用和实现。这一部分的内容非常重要,因为对本书其余部分的理解将完全依赖于对OOP的彻底理解。实际上,您将注意到在这些篇幅中没有一行程序代码。如果您在.NET或者J2EE中有了OOP的基本概念,那么就不需要在此处花费太多时间——仅仅需要花费时间查看PHP如何实现标准的OOP模式即可。 然后,本部分介绍了PHP 6所引入的一些其他工具(但是一些缺乏经验的开发人员很少使用这些工具),包括名称空间、集合和迭代器,并且展示了这些工具在通用设计模式中的作用。 自然,如果一本书不讨论企业应用程序开发中的数据库及其作用的话,那么肯定不能成为专业书籍。本书在第7章介绍了PDO,并介绍了PostgreSQL。本书中的例子均使用了该数据库(本书将介绍的大多数概念完全与具体数据库无关,这就意味着这些例子可以在MySQL、SQL Server等其他数据库平台上运行得非常好)。 第Ⅱ部分:高级开发技术 本书的第Ⅰ部分详细地介绍了高端PHP 6技术的具体细节,而第Ⅱ部分则主要介绍如何使用这些技术来最好地应对常见软件开发工作中的挑战。如何使用这些技术有时称为软件体系结构—— 高效地设计具有良好结构的软件。 在本部分中,我们将介绍对象关系映射(Object Relation Mapping,ORM)、事件驱动编程(Event-Driven Programming,EDP)、日志记录和调试技术、与用户通信的方式、会话管理、身份验证以及设计和开发Web服务。 至关重要的是,这个部分包含了内容丰富的两章,其中讨论了技术设计中最高层的两个方面。该部分还讨论了市面上的各种PHP开发架构(以及各种架构的优点和缺点),并且讨论了为什么首先要考虑使用一个架构。这一点很重要,因为本书的剩余部分所展示的例子均已选择了一个架构。 第Ⅲ部分:现实世界案例研究 没有任何学习方式可以替代您亲自尝试实际应用学到的知识。因为本书的前面两个部分介绍了相关的理论,因此第Ⅲ部分将把这些理论应用于实践。 本部分首先并没有深入分析应用程序,而是介绍一些项目管理的基本知识,并讨论了系统和网络体系结构如何支持该应用程序。然后,通过利用MVC架构从头开始快速构建应用程序,将前面两个部分所介绍的软件体系结构和高级开发技术用于实践。 在构建该应用程序之后,您将学习质量保证(QA)和测试的重要性,并将学习如何在中型和大型项目中实现质量保证和测试。此外,本部分还介绍了一个经常被忽视的主题:如何让项目真正运行(或者称为部署)。 第Ⅳ部分:超越PHP的极限 本书的这一部分将为您(作为一名有抱负的PHP专家)提供一些真正公平的建议。这些建议均来自于像您一样平凡的开发人员——他们也曾经是PHP的新手。 因此,本部分包含4个“热门主题”,这些都是每天工作均使用PHP的人员在线或者离线争论最多的主题。经过冷静的分析,您将知道需要了解的一些难题以做出自己的决策,并形成自己的明智选择。 本部分也将介绍PHP驱动的内容管理系统(CMS)和内容管理架构(CMF),这两类软件现在都有现成项目,并且其数量还在大量增长。本部分还将展示PHP如何在具有大流量或高可用性的Web站点中扮演重要的角色,如Flickr和Facebook。本部分还将讨论如何说服持怀疑观点的同事或客户,PHP能够方便地实现.NET和Java的功能,并且还具有一定的优势。最重要的是,您将看到作为一名PHP专家的职业之路就摆在您的面前——这是非常有前途的职业,这将使得您长期坚持使用该语言。 第Ⅴ部分:附录 附录中包含了一些在前面4个部分中均没有完整描述的重要主题。附录A将介绍版本控制——为什么版本控制很重要,以及如何使用CVS或Subversion(SVN)在大型项目中实现版本控制。附录B将介绍大量的PHP集成开发环境(IDE),IDE使得您可以抛弃传统的文本编辑器,转而使用精致的、为PHP量身定做的解决方案。 附录C讨论了如何调整PHP应用程序的性能以最有效地使用这些应用程序(即使是在比较慢的服务器硬件上)。附录D简单地介绍了在Linux、Mac OS X和Windows上安装PHP和Apache的简单过程。 全局考虑 我们真诚地希望您能帮助改进专业产品环境中和Internet上的项目中的软件质量。不管是从专业的角度还是从哲学的角度来看,我们都是共同在编写代码,因此也许我们可以共同把现有的应用程序变得更完善。 源代码 在使用本书的例子时,可以选择手动输入所有的代码,也可以选择同本书配套的源代码文件。本书所使用的源代码文件都可以从和www.tupwk.com.cn上下载。一旦访问该网站,只需要查找本书的书名(或者使用Search框,或者使用某个书名列表),然后点击该书细节页面上的Download Code链接就可以获取本书的所有源代码。 由于很多书有类似的书名,您可能会发现通过ISBN搜索是最简单的方法;本书的ISBN号为978-0-470-39509-7。 一旦下载了该代码,就用您喜欢的解压工具对其解压。您还可以到Wrox代码的主页面/dynamic/books/download.aspx上查看本书中所有可用的代码以及Wrox所出版的其他书籍的代码。 勘误 我们已经尽全力来确保本书的正文和代码中不存在错误。但是,没有人是完美的,因此错误是不可避免的。如果您在我们的书本中发现了一个错误,比如说拼写错误或者是代码中的错误,我们很高兴能收到您的反馈。通过发送一个勘误表,可以节省其他读者大量思考的时间,并且同时也将帮助我们提供更加高质量的信息。 为了找到本书的勘误页,访问并利用Search框或者是某个书名列表来找到书名。然后,在该书的细节页面,点击Book Errata链接。在该页面上,您可以看到所有为本书所提交的以及Wrox作者所提供的勘误。/misc-pages/booklist.shtml上有一个包含各书勘误表的完整的图书列表。 如果在Book Errata页面上没有发现“您的”错误,那么转到/contact/ techsupport.shtml页面,并填写该页面上的表单以将您所发现的错误发送给我们。我们将核实该信息,如果错误确实存在,我们将给本书的勘误页面发送一条消息,并在本书的后续版本中修正该问题。 为了与作者或其他用户讨论,请加入P2P论坛。该论坛是一个基于Web的系统。在该系统中您可以提供和Wrox书籍相关的信息和技术,并与其他读者和技术用户进行讨论。该论坛提供了一个订阅功能。在论坛上有新的帖子的时候,该订阅功能可以通过电子邮件的形式把您所选定的、感兴趣的问题发送给您。Wrox作者、编辑、其他的行业专家以及您的忠实读者将一起在论坛里讨论。 在 中您可以找到很多论坛,这不仅仅对您阅读本书有帮助,也将帮助您开发自己的应用程序,加入该论坛,只需要以下步骤; (1) 登录,点击Register链接。 (2) 阅读使用条款并点击Agree。 (3) 填写必需的信息以加入论坛,当然您也可以填写一些您想提供的可选信息,然后点击Submit。 (4) 您将收到一份电子邮件来告诉您如何验证账号并完成整个加入过程。 不加入P2P,您也可以阅读论坛的消息。但是,如果想提交您自己的消息,则必须加入。 一旦加入,您就可以提交新的消息并回应其他用户提交的消息。任何时候都可以阅读网上的消息。如果您希望能够将某个特定论坛的新消息通过电子邮件的形式发送给您,那么可以点击该论坛列表中与论坛名字对应的Subscribe按钮。想了解更多使用Wrox P2P的信息,可以阅读P2P FAQ。它主要回答论坛软件如何工作以及和P2P以及Wrox书籍相关的常见问题。想阅读FAQ,点击任何P2P页面的FAQ链接即可。