PHP高级程序设计:模式、框架与测试
【作 者】(加)Kevin McArthur [同作者作品] [作译者介绍] 【译 者】 汪泳[同译者作品] 【丛 书 名】 图灵程序设计丛书 【出 版 社】 人民邮电出版社 【书 号】 9787115193179 【上架时间】 2009-5-31 【出版日期】 2009 年7月 【开 本】 16开 【页 码】 1 【版 次】1-1 市场价 :¥45.00 ¥33.75(75折) 新书75折预定及样章试读:【编辑推荐】享有盛誉的PHP高级教程.Zend Framework核心开发人员力作..深入设计模式、PHP标准库和JSON ... 【内容简介】今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级特性的资料一直缺乏,大大影响了PHP语言的深入应用。.本书填补了这一空白。它专门针对有一定经验的PHP程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准PHP库等内容。同时,为适应目前Web开发的新趋势,作者还全面探讨了MVC架构和Zend Framework,以及Ajax、JSON、SOAP等Web 2.0技术。书中穿插的大量软件开发实战经验和对PHP编程思想的感悟,将大大提升你的内在功力。...
【前言】在过去的十年间,PHP已经从一套为Web站点开发人员提供的简单工具转化成完整的OOP(面向对象编程)语言了。在Web应用开发方面,PHP现在可与Java和C#这样的主流编程语言抗衡,越来越多的公司为了给站点提供更加强大的功能都采用了PHP。原因很清楚:PHP既是一门易学的语言,又具有强大的特性。通过阅读本书,你将会深入理解OOP理论,并学到如何使用框架和高级的系统互操作功能,最大限度地发挥出PHP编程的威力。读者对象这是一本高级书。我非常慎重地选择本书应该包含的内容以及读者应该掌握的知识。读者应该对HTTP和PHP有深刻的理解,也就是说,应该了解如何创建Web页面和Web表单,并且还应该理解像HTTP请求生命周期这样的关键概念。如果你还不了解这些内容,那么建议阅读由Larry ullman合著的PHP for the Web:Visual QuickStart Guide一书 。这是一本非常好的介绍PHP编程的书,任何希望成为PHP开发人员的人都绝对应该阅读它。如果你自己的PHP编程水平已达到中高级,那么本书正好适合你。本书结构本书每一章内容都在前面章节的基础上展开,同时也考虑到读者的基础参差不齐。如果你认为已经了解了某章讲述的内容,那么建议你跳过那一章,但最好还是读一下每章末尾的“小结”部分,那是每一章内容的扼要总结。不过,古人云“温故而知新”,就算是最熟练的程序员应该也会在每章中有新的收获。本书分为五个部分。第一部分,OOP和模式。这部分是学习高级的OOP概念必备的基础知识。该部分直接进入主题,讲解了抽象类、接口、静态方法、单例和工厂之类的模式,以及异常等内容。最后介绍了PHP 6所具有的新特性。第二部分,测试和文档编写。这部分包括了所有那些相关的“外围”概念,如测试驱动开发和自动部署等。讲述了如何编写优秀的文档,并且介绍了PHPDoc和DocBook等几种文档标准。这部分还介绍了反射API的内容,使读者了解如何从程序中获取元数据。最后还讨论了持续集成,以及如何使用Phing和Xinc这样的工具来改善开发工作流。第三部分,SPL(标准PHP库)。SPL包含了一些最高级的PHP代码。它提供了对于像索引器和迭代器这样的高级OOP概念的语言支持,还提供了处理异常的结构,以及像观察者/发布者这样的模式。这部分信息使大家可以创建出更加优美并且结构良好的类。第四部分,MVC模式。MVC(模型—视图—控制器)可能是PHP开发人员用到的最有用的开发模式。它可用来为应用程序创建结构,并且调配团队中最好的资源来完成工作。对这一模式的深刻理解可能是任何PHP开发人员都必须掌握的最重要的职业技能,所以本书力求完整地解释这一模式。这一部分还介绍了Zend框架,这是为众多PHP公司所接受的一套基于MVC的框架。一开始,我们介绍了如何逐步建立起一个完整的框架应用程序,并使它开始运行,然后讲解了Zend框架的核心概念和高级特性。第五部分,Web 2.0。这部分介绍了关于Web 2.0所需要了解的所有事项。你将会学到关于Ajax、JSON、SOAP Web服务以及SSL客户端验证等方面的信息。另外,这部分还包括了大量非常有用的辅导材料,这些辅导材料是基于个人经验提供的。联系作者欢迎大家随时通过电子邮箱与作者取得联系。在. stormtide.ca/pro-hpp-book或者Apress出版社网站的页面上可以获得本书的最新信息 。此外,大家还可以访问#PHP EFnet通过IRC与作者聊天 。致谢本书是在数千名开发人员组成的社区十年来的技术创新基础上写成的。我感谢他们所有人,并以此书向他们的卓越成果致敬。感谢David Fugate给了我编写这本书的机会,以及在写本书的过程中给我提供的必要的指导。还要感谢Michael Geist,正是他提供的帮助和建议使我能够顺利地解决困难。我还必须感谢我的朋友和家人对我的支持,没有他们,我不可能获得这些成果。最后,我要对Apress出版社的所有人表示我最诚挚的谢意,其中有的人参与了本书的出版工作,有的人则帮助其他作者出版了高质量著作。没有他们,这本书就不会面世目 录
第一部分 OOP和模式第1章 抽象类、接口和契约式编程 21.1 抽象类 21.2 接口 41.3 instanceof操作符 71.4 契约式编程 81.5 小结 8第2章 静态变量、成员和方法 92.1 静态变量 92.2 类中静态元素的使用 102.2.1 静态成员 102.2.2 双冒号(paamayim nekudotayim) 112.2.3 静态方法 142.3 “静态”特性的争论 152.4 小结 15第3章 单例模式和工厂模式 173.1 职责和单例模式 173.2 工厂模式 193.2.1 图像对象工厂 203.2.2 可移植的数据库 223.3 小结 24第4章 异常 264.1 实现异常 264.1.1 异常元素 264.1.2 扩展异常 284.2 记录异常日志 304.2.1 记录自定义异常的日志 304.2.2 定义未捕捉的异常处理程序 314.3 异常产生的开销 314.4 错误代码 324.5 类型提示和异常 334.6 重新抛出异常 334.7 小结 34第5章 PHP 6中的新特性 355.1 安装PHP 355.2 PHP 6中的Unicode支持 375.2.1 Unicode语义 375.2.2 Unicode排序规则 395.3 命名空间 405.4 延迟静态绑定 415.5 具有动态特性的静态方法 435.6 三目运算符(ifsetor) 435.7 XMLWriter类 435.8 小结 45第二部分 测试和文档编写第6章 文档编写和编码规范 486.1 编码规范 486.2 PHP注释和文法解析 496.2.1 注释的类型 506.2.2 关于文档注释的更多信息 506.2.3 文法解析 516.2.4 元数据 516.3 PHPDoc 526.4 DocBook 556.4.1 创建DocBook要用到的XML文件 556.4.2 解析DocBook文件 566.4.3 使用DocBook的元素 596.5 小结 62第7章 反射API 647.1 反射API介绍 647.1.1 获得用户声明的类 657.1.2 理解使用反射技术的插件架构 667.2 解析基于反射的文档数据 717.2.1 安装文档块分词器 727.2.2 访问文档注释数据 737.2.3 给文档注释数据做分词处理 737.2.4 解析标识符 747.3 扩展反射API 767.3.1 解析器与反射API的集成 777.3.2 扩展反射类 787.3.3 更新解析器以处理行内标签 857.3.4 添加特性 887.4 小结 92第8章 测试、部署和持续集成 938.1 用作版本控制的Subversion 938.1.1 安装Subversion 948.1.2 设置Subversion 948.1.3 提交修改和解决冲突 958.1.4 激活对Subversion的访问功能 978.2 用于单元测试的PHPUnit 988.2.1 安装PHPUnit 988.2.2 创建第一个单元测试 988.2.3 理解PHPUnit 1008.3 用于部署的Phing 1028.3.1 安装Phing 1028.3.2 编写Phing部署脚本 1038.4 Xinc,持续集成服务器 1068.4.1 安装Xinc 1068.4.2 创建Xinc配置文件 1068.4.3 启动Xinc 1078.5 用于调试的Xdebug 1078.5.1 安装Xdebug 1088.5.2 使用Xdebug跟踪代码执行 1088.5.3 使用Xdebug执行基准测试 1108.5.4 使用Xdebug检查代码覆盖 1108.5.5 使用Xdebug进行远程调试 1118.6 小结 111第三部分 SPL(标准PHP库)第9章 SPL简介 1149.1 SPL基础 1149.2 迭代器 1159.2.1 Iterator接口 1159.2.2 迭代器辅助函数 1169.3 数组重载 1179.3.1 ArrayAccess接口 1179.3.2 计数和数组访问 1179.4 观察者模式 1189.5 序列化 1219.6 SPL自动加载 1239.7 对象标识符 1269.8 小结 126第10章 SPL迭代器 12810.1 迭代器接口和迭代器 12810.1.1 迭代器接口 12810.1.2 迭代器 13010.2 迭代器的实际用法 14210.2.1 使用SimpleXML解析XML文件 14210.2.2 使用DBA访问平面文件数据库 14310.3 小结 144第11章 SPL文件和目录处理 14511.1 文件和目录信息 14511.2 目录的迭代访问 14711.2.1 列出文件和目录的清单 14811.2.2 查找文件 15011.2.3 创建自定义文件过滤迭代器 15111.3 SPL文件对象操作 15311.3.1 文件内容的迭代访问 15311.3.2 CSV操作 15311.3.3 搜索文件 15711.4 小结 158第12章 SPL数组重载 16012.1 ArrayAccess接口介绍 16012.2 ArrayObject介绍 16112.3 创建一个SPL购物车 16212.4 使用对象作为键值 16512.5 小结 168第13章 SPL异常 16913.1 逻辑异常 16913.2 运行时异常 17113.3 无效函数调用异常和无效方法调用异常 17113.4 域异常 17213.5 范围异常 17213.6 无效参数异常 17313.7 长度异常 17413.8 溢出异常 17513.9 向下溢出异常 17513.10 小结 177第四部分 MVC模式第14章 MVC架构 18014.1 为什么使用MVC 18014.2 MVC应用程序布局 18114.2.1 从Web服务器开始 18114.2.2 动作和控制器 18214.2.3 模型 18214.2.4 视图 18214.3 选择MVC框架的标准 18214.3.1 MVC框架的架构 18214.3.2 MVC框架文档 18314.3.3 MVC框架的社区 18314.3.4 MVC框架的支持 18314.3.5 MVC框架的灵活性 18414.4 实现MVC框架 18414.4.1 设置一个虚拟主机 18414.4.2 创建一个MVC框架 18514.5 小结 191第15章 Zend框架简介 19215.1 设置Zend框架 19215.1.1 安装Zend框架 19215.1.2 创建一个虚拟主机 19315.1.3 引导文件 19415.2 创建控制器、视图和模型 19615.2.1 添加索引控制器 19615.2.2 添加视图 19615.2.3 定义模型 19715.3 添加功能 20015.3.1 使用request和response对象 20115.3.2 使用内置的操作辅助类 20215.3.3 使用内置的视图辅助类 20315.3.4 验证输入信息 20415.4 小结 208第16章 Zend框架高级功能 20916.1 管理配置文件 20916.1.1 使用数组的方法 20916.1.2 INI方法 21016.1.3 XML方法 21016.2 设置站点级别的视图变量 21116.3 共享对象 21116.4 错误处理 21216.5 应用程序日志记录 21316.6 缓存 21416.6.1 缓存功能在安全性上的考虑 21416.6.2 缓存技术 21516.7 验证用户 21716.8 在PHP语言中使用JSON 22016.9 自定义路由 22116.10 管理会话 22316.11 发送邮件 22416.12 创建PDF文件 22516.12.1 创建新的PDF页面 22616.12.2 在PDF页面上绘图 22616.13 与Web服务相集成 22816.14 小结 229第17章 应用Zend框架 23017.1 模块和模型设置 23017.1.1 常规的模块化的目录结构 23017.1.2 模型库和Zend_Loader 23117.2 请求生命周期 23217.3 创建插件 23317.4 创建辅助类 23417.4.1 编写操作辅助类 23417.4.2 编写视图辅助类 23417.5 实现访问控制功能 23517.6 使用两步视图 23817.6.1 创建一个主布局 23817.6.2 使用占位符 23917.7 小结 240第五部分 Web 2.0第18章 Ajax和JSON 24218.1 JSON和PHP 24218.1.1 JSON扩展 24318.1.2 Zend框架中的JSON 24418.2 JSON和JavaScript 24418.3 一些Ajax项目 24818.3.1 GET请求 24818.3.2 POST请求 24918.4 小结 252第19章 Web服务和SOAP协议介绍 25319.1 PHP Web服务架构介绍 25319.2 WSDL介绍 25419.2.1 WSDL术语 25419.2.2 WSDL文件 25419.3 SOAP介绍 25619.4 使用PHP SOAP扩展 25719.4.1 SoapClient类的方法和选项 25919.4.2 SoapServer类的方法和选项 26119.5 真实的示例 26119.6 小结 264第20章 高级Web服务 26520.1 复杂类型 26520.1.1 复杂类型示例 26520.1.2 类映射 27020.2 身份验证 27120.2.1 HTTP验证 27120.2.2 通信密钥验证 27120.2.3 客户端证书验证 27220.3 会话 27220.4 对象和持久化 27320.5 二进制数据传输 27420.6 小结 276第21章 证书验证 27721.1 PKI安全性 27721.1.1 CA 27721.1.2 Web服务器证书 27821.1.3 客户端证书 27821.1.4 根CA证书 27821.2 设置客户端证书验证 27821.2.1 创建客户端的证书验证机制 27921.2.2 创建一个自签名的Web服务器证书 28121.2.3 为SSL配置Apache服务器 28321.2.4 创建客户端证书 28421.2.5 只允许证书验证过的客户端访问服务器 28621.2.6 测试证书 28721.3 PHP验证控制 28721.3.1 将PHP绑定到证书上 28821.3.2 设置Web服务验证 28821.4 小结 289