标题：深入PHP:面向对象、模式与实践
图书信息
  深入PHP:面向对象、模式与实践作者：赞德斯彻(Matt Zandstra)(作者), 陈浩(译者), 吴孙滨(译者), 胡丹(译者) 
出版社: 人民邮电出版社; 第1版 (2010年5月1日) 
丛书名: 图灵程序设计丛书 
平装: 383页 
正文语种: 简体中文 
开本: 16 
ISBN: 9787115225788, 7115225788 
条形码: 9787115225788 
产品尺寸及重量: 23.4 x 18.6 x 2.4 cm ; 581 g
内容简介
《深入PHP:面向对象、模式与实践(第2版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码，如何使用强大的phpDocumentor自动文档系统创建详细的多功能文档，如何通过管理CVS中的代码和使用Phing构建系统在开发过程中得到更好的灵活性，以及如何使用PEAR包管理解决方案。
《深入PHP：面向对象、模式与实践（第2版）》适合中高级PHP程序员阅读。
PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比，PHP是将程序嵌入到HTML文档中去执行，执行效率比完全生成HTML标记的CGI要高许多；PHP还可以执行编译后代码，编译可以达到加密和优化代码运行，使代码运行更快。PHP具有非常强大的功能，所有的CGI的功能PHP都能实现，而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C++进行程序的扩展！
编辑推荐
《深入PHP:面向对象、模式与实践(第2版)》全面深入地剖析了面向对象的PHP编程与设计。首先介绍了PHP的OO特性，包括类声明、对象实例化、继承、方法与属性封装以及静态方法与属性、抽象类、接口、异常处理、对象克隆等高级主题。然后介绍了设计模式，阐述了模式的概念，展示了如何在PHP中实现几个关键的模式，用专门的章节介绍了企业模式和数据库模式。《深入PHP：面向对象、模式与实践（第2版）》最后一部分围绕PHP应用程序开发，详细介绍了一批极为实用的辅助开发工具，讨论了具有普遍意义的最佳开发实践。
《深入PHP:面向对象、模式与实践（第2版）》适合每位PHP程序员进阶参考，帮助他们掌握PHP面向对象设计和开发的精髓，跻身高端PHP程序员之列。
Web开发系列
世界级专家力作
完美结合面向对象思想与PHP技术
PHP模块化编程必读
媒体推荐
“本书正是为PHP企业级开发人员和软件工程师量身打造的经典著作，每一位想提高技能的PHP开发人员都应阅读。”
——KenGuest，爱尔兰PHP用户组主席，PEARQA团队和PEAR组的成员
“这是我读过的PHP书中最好的一本，它介绍了PHP面向对象编程的方方面面。我自学PHP已经5年了，我的大多数问题都能在这本书中找到答案。强烈推荐那些有一定PHP经验并想更上一层楼的程序员阅读。”
——Amazon-com读者评论
作者简介
赞德斯彻（MartZandstra），Yahoo公司的高级程序员，曾从事过教师等工作，著有SamsTeachYourselfPHPin24Hours等书。
目录
第一部分 介绍 
第1章 PHP：设计与管理 2 
1.1 问题 2 
1.2 PHP和其他语言 3 
1.3 关于本书 5 
1.3.1 对象 5 
1.3.2 模式 5 
1.3.3 实践 6 
1.3.4 本书第2版中的新内容 7 
1.4 小结 7 
第二部分 对象 
第2章 PHP与对象 10 
2.1 PHP对象的偶然成功 10 
2.1.1 最初：PHP/FI 10 
2.1.2 语法糖：PHP 3 10 
2.1.3 一场静悄悄的革命：PHP 4 11 
2.1.4 拥抱改变：PHP 5 12 
2.2 走向未来：PHP 6 12 
2.3 拥护和疑虑：关于对象的争辩 13 
2.4 小结 13 
第3章 对象基础 14 
3.1 类和对象 14 
3.1.1 编写第一个类 14 
3.1.2 第一个对象（或两个） 15 
3.2 设置类中的属性 15 
3.3 使用方法 18 
3.4 参数和类型 20 
3.4.1 基本类型 20 
3.4.2 获得提示：对象类型 23 
3.5 继承 24 
3.5.1 继承问题 24 
3.5.2 使用继承 28 
3.5.3 public、private、protected：管理类的访问 32 
3.6 小结 35 
第4章 高级特性 36 
4.1 静态方法和属性 36 
4.2 常量属性 39 
4.3 抽象类 39 
4.4 接口 41 
4.5 错误处理 43 
4.6 Final类和方法 48 
4.7 使用拦截器 49 
4.8 析构方法 53 
4.9 使用__clone()复制对象 54 
4.10 定义对象的字符串值 56 
4.11 小结 57 
第5章 对象工具 58 
5.1 PHP和包 58 
5.1.1 PHP和命名空间 60 
5.1.2 包含路径 62 
5.1.3 自动加载 63 
5.2 类函数和对象函数 64 
5.2.1 查找类 64 
5.2.2 了解对象或类 65 
5.2.3 了解类中的方法 66 
5.2.4 了解类属性 67 
5.2.5 了解继承 67 
5.2.6 方法调用 68 
5.3 反射API 69 
5.3.1 入门 69 
5.3.2 开始行动 69 
5.3.3 检查类 71 
5.3.4 检查方法 72 
5.3.5 检查方法参数 74 
5.3.6 使用反射API 75 
5.4 小结 78 
第6章 对象与设计 79 
6.1 代码设计的定义 79 
6.2 面向对象设计和过程式编程 80 
6.2.1 职责 83 
6.2.2 内聚 83 
6.2.3 耦合 83 
6.2.4 正交 84 
6.3 选择类 84 
6.4 多态 85 
6.5 封装 86 
6.6 忘记细节 87 
6.7 四个方向标 88 
6.7.1 代码重复 88 
6.7.2 类知道的太多 88 
6.7.3 万能的类 88 
6.7.4 条件语句 89 
6.8 UML 89 
6.8.1 类图 89 
6.8.2 时序图 94 
6.9 小结 95 
第三部分 模式 
第7章 什么是设计模式？为何使用它们 98 
7.1 什么是设计模式 98 
7.2 设计模式概览 100 
7.2.1 命名 100 
7.2.2 问题 100 
7.2.3 解决方案 101 
7.2.4 效果 101 
7.3 《设计模式》格式 101 
7.4 为什么使用设计模式 102 
7.4.1 一个设计模式定义了一个问题 102 
7.4.2 一个设计模式定义了一个解决方案 102 
7.4.3 设计模式是语言无关的 102 
7.4.4 模式定义了一组词汇 102 
7.4.5 模式是经过测试的 103 
7.4.6 模式是为协作而设计的 103 
7.4.7 设计模式促进良好设计 103 
7.5 PHP与设计模式 103 
7.6 小结 104 
第8章 模式原则 105 
8.1 模式的启示 105 
8.2 组合与继承 106 
8.2.1 问题 106 
8.2.2 使用组合 108 
8.3 解耦 110 
8.3.1 问题 110 
8.3.2 降低耦合 111 
8.4 针对接口编程，而不是针对实现编程 112 
8.5 变化的概念 113 
8.6 父子关系 113 
8.7 模式 114 
8.7.1 用于生成对象的模式 114 
8.7.2 用于组织对象和类的模式 114 
8.7.3 面向任务的模式 114 
8.7.4 企业模式 114 
8.7.5 数据库模式 114 
8.8 小结 115 
第9章 生成对象 116 
9.1 生成对象的问题和解决方法 116 
9.2 单例模式 119 
9.2.1 问题 120 
9.2.2 实现 120 
9.2.3 结果 122 
9.3 工厂方法模式 122 
9.3.1 问题 122 
9.3.2 实现 125 
9.3.3 结果 126 
9.4 抽象工厂模式 127 
9.4.1 问题 127 
9.4.2 实现 128 
9.4.3 结果 129 
9.4.4 原型模式 131 
9.4.5 问题 132 
9.4.6 实现 133 
9.5 某些模式的骗术 134 
9.6 小结 136 
第10章 让面向对象编程更加灵活的模式 137 
10.1 构造可灵活创建对象的类 137 
10.2 组合模式 137 
10.2.1 问题 138 
10.2.2 实现 139 
10.2.3 效果 143 
10.2.4 组合模式小结 146 
10.3 装饰模式 146 
10.3.1 问题 146 
10.3.2 实现 148 
10.3.3 效果 151 
10.4 外观模式 151 
10.4.1 问题 152 
10.4.2 实现 153 
10.4.3 效果 153 
10.5 小结 154 
第11章 执行及描述任务 155 
11.1 解释器模式 155 
11.1.1 问题 155 
11.1.2 实现 156 
11.1.3 解释器的问题 162 
11.2 策略模式 163 
11.2.1 问题 163 
11.2.2 实现 164 
11.3 观察者模式 167 
11.4 访问者模式 173 
11.4.1 问题 174 
11.4.2 实现 175 
11.4.3 访问者模式的问题 178 
11.5 命令模式 179 
11.5.1 问题 179 
11.5.2 实现 179 
11.6 小结 183 
第12章 企业模式 184 
12.1 架构概述 184 
12.1.1 模式 184 
12.1.2 应用程序和层 185 
12.2 企业架构之外的基础模式 187 
12.2.1 注册表 187 
12.2.2 实现 188 
12.3 表现层 196 
12.3.1 前端控制器 196 
12.3.2 应用控制器 205 
12.3.3 页面控制器 214 
12.3.4 模板视图和视图助手 218 
12.4 业务逻辑层 220 
12.4.1 事务脚本 221 
12.4.2 领域模型 225 
12.5 小结 227 
第13章 数据库模式 228 
13.1 数据层 228 
13.2 数据映射器 228 
13.2.1 问题 229 
13.2.2 实现 229 
13.2.3 效果 239 
13.3 标识映射 239 
13.3.1 问题 240 
13.3.2 实现 240 
13.3.3 效果 242 
13.4 工作单元 243 
13.4.1 问题 243 
13.4.2 实现 243 
13.4.3 效果 246 
13.4.4 延迟加载 247 
13.4.5 问题 247 
13.4.6 实现 247 
13.4.7 效果 249 
13.5 领域对象工厂 249 
13.5.1 问题 249 
13.5.2 实现 249 
13.5.3 效果 250 
13.6 标识对象 252 
13.6.1 问题 252 
13.6.2 实现 252 
13.6.3 效果 256 
13.7 选择工厂和更新工厂模式 257 
13.7.1 问题 257 
13.7.2 实现 257 
13.7.3 效果 259 
13.8 数据映射器中剩下些什么 260 
13.9 小结 262 
第四部分 实践 
第14章 良好和糟糕的实践 264 
14.1 超越代码 264 
14.2 借一个轮子 264 
14.3 合作愉快 266 
14.4 为你的代码插上双翼 267 
14.5 文档 267 
14.6 测试 268 
14.7 小结 269 
第15章 PEAR 270 
15.1 什么是PEAR 270 
15.2 安装PEAR包 271 
15.3 使用PEAR包 273 
15.4 创建自己的PEAR包 278 
15.4.1 package.xml 278 
15.4.2 package.xml的组成元素 278 
15.4.3 contents元素 279 
15.4.4 依赖 282 
15.4.5 使用phprelease进行灵活的自定义安装 283 
15.4.6 发布包 284 
15.4.7 创建自己的PEAR频道 284 
15.5 小结 288 
第16章 用phpDocumentor生成文档 289 
16.1 为什么要使用文档 289 
16.2 安装 290 
16.3 生成文档 290 
16.4 DocBlock注释 292 
16.5 类的文档 293 
16.6 文件的文档 294 
16.7 属性的文档 295 
16.8 方法的文档 296 
16.9 在文档中创建链接 297 
16.10 小结 300 
第17章 使用CVS进行版本控制 301 
17.1 为什么要使用版本控制 301 
17.2 获得CVS 302 
17.3 配置CVS代码库 303 
17.3.1 创建代码库 303 
17.3.2 配置客户端 304 
17.3.3 在多台机器上运行CVS 304 
17.4 开始项目 305 
17.5 更新和提交 307 
17.6 增加和删除文件及目录 309 
17.6.1 添加文件 309 
17.6.2 删除文件 310 
17.6.3 添加目录 310 
17.6.4 添加二进制文件 311 
17.6.5 删除目录 311 
17.7 标记和导出项目 312 
17.7.1 标记项目 313 
17.7.2 通过标签获取项目代码 313 
17.7.3 导出项目 314 
17.8 创建项目分支 314 
17.9 小结 317 
第18章 使用PHPUnit进行测试 318 
18.1 功能测试与单元测试 318 
18.2 手工测试 319 
18.3 引入PHPUnit 321 
18.3.1 创建测试用例 321 
18.3.2 断言方法 322 
18.3.3 测试异常 323 
18.3.4 运行测试套件 324 
18.3.5 约束 326 
18.3.6 模拟与桩 328 
18.3.7 失败是成功之母 331 
18.4 警告 333 
18.5 小结 335 
第19章 用Phing实现项目的自动 构建 336 
19.1 什么是Phing 336 
19.2 获取和安装Phing 337 
19.3 编写build文档 337 
19.3.1 目标 339 
19.3.2 属性 340 
19.3.3 类型 345 
19.3.4 任务 348 
19.4 小结 352 
第五部分 结论 
第20章 对象、模式与实践 354 
20.1 对象 354 
20.1.1 选择 355 
20.1.2 封装和委托 355 
20.1.3 解耦 355 
20.1.4 复用性 356 
20.1.5 美学 356 
20.2 模式 356 
20.2.1 模式给我们带来了什么 357 
20.2.2 模式和设计原则 357 
20.3 实践 359 
20.3.1 测试 359 
20.3.2 文档 359 
20.3.3 版本控制 360 
20.3.4 自动构建 360 
20.3.5 我们还遗漏了什么 360 
20.4 小结 361 
第六部分 附录 
附录A 参考文献 364 
附录B 简单的解析器 366