深入PHP:面向对象、模式与实践(第3版)

深入PHP:面向对象、模式与实践(第3版)
作 者: Matt Zandstra 陈浩 吴孙滨 胡丹 李静
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: PHP
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Mart Zandstra,Yahoo公司的高级程序员,曾从事过教师等工作,著有Sams Teach Yourself PHP in 24 Hours等书,还为Linux Magazine、IBMD DeveloperWorks、Zend.com和bdz-corlsuit.com写过PHP方面的文章。

内容简介

《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成。《深入PHP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。

图书目录

第一部分 介绍第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 第3版新增内容 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 13

2.3 拥护和疑虑:关于对象的争辩 13

2.4 小结 14第3章 对象基础 15

3.1 类和对象 15

3.1.1 编写第一个类 15

3.1.2 第一个对象(或两个) 16

3.2 设置类中的属性 17

3.3 使用方法 19

3.4 参数和类型 21

3.4.1 基本类型 22

3.4.2 获得提示:对象类型 24

3.5 继承 26

3.5.1 继承问题 26

3.5.2 使用继承 30

3.5.3 public、private、protected:管理类的访问 35

3.6 小结 39第4章 高级特性 40

4.1 静态方法和属性 40

4.2 常量属性 43

4.3 抽象类 44

4.4 接口 46

4.5 延迟静态绑定:static关键字 47

4.6 错误处理 50

4.7 Final 类和方法 56

4.8 使用拦截器 57

4.9 析构方法 61

4.10 使用__clone()复制对象 62

4.11 定义对象的字符串值 64

4.12 回调、匿名函数和闭包 65

4.13 小结 69第5章 对象工具 70

5.1 PHP和包 70

5.1.1 PHP包和命名空间 70

5.1.2 自动加载 78

5.2 类函数和对象函数 79

5.2.1 查找类 80

5.2.2 了解对象或类 81

5.2.3 了解类中的方法 82

5.2.4 了解类属性 83

5.2.5 了解继承 83

5.2.6 方法调用 84

5.3 反射API 85

5.3.1 入门 85

5.3.2 开始行动 86

5.3.3 检查类 88

5.3.4 检查方法 89

5.3.5 检查方法参数 91

5.3.6 使用反射API 92

5.4 小结 95第6章 对象与设计 96

6.1 代码设计的定义 96

6.2 面向对象设计和过程式编程 97

6.2.1 职责 100

6.2.2 内聚 100

6.2.3 耦合 101

6.2.4 正交 101

6.3 选择类 101

6.4 多态 102

6.5 封装 104

6.6 忘记细节 105

6.7 4 个方向标 105

6.7.1 代码重复 106

6.7.2 类知道的太多 106

6.7.3 万能的类 106

6.7.4 条件语句 106

6.8 UML 106

6.8.1 类图 107

6.8.2 时序图 111

6.9 小结 112第三部分 模式第7章 什么是设计模式?为何使用它们 114

7.1 什么是设计模式 114

7.2 设计模式概览 116

7.2.1 命名 116

7.2.2 问题 116

7.2.3 解决方案 117

7.2.4 效果 117

7.3 《设计模式》格式 117

7.4 为什么使用设计模式 118

7.4.1 一个设计模式定义了一个问题 118

7.4.2 一个设计模式定义了一个解决方案 118

7.4.3 设计模式是语言无关的 118

7.4.4 模式定义了一组词汇 118

7.4.5 模式是经过测试的 119

7.4.6 模式是为协作而设计的 119

7.4.7 设计模式促进良好设计 119

7.5 PHP与设计模式 120

7.6 小结 120第8章 模式原则 121

8.1 模式的启示 121

8.2 组合与继承 122

8.2.1 问题 122

8.2.2 使用组合 124

8.3 解耦 127

8.3.1 问题 127

8.3.2 降低耦合 128

8.4 针对接口编程,而不是针对实现编程 130

8.5 变化的概念 131

8.6 父子关系 132

8.7 模式 132

8.7.1 用于生成对象的模式 133

8.7.2 用于组织对象和类的模式 133

8.7.3 面向任务的模式 133

8.7.4 企业模式 133

8.7.5 数据库模式 133

8.8 小结 133第9章 生成对象 134

9.1 生成对象的问题和解决方法 134

9.2 单例模式 138

9.2.1 问题 138

9.2.2 实现 139

9.2.3 结果 141

9.3 工厂方法模式 141

9.3.1 问题 141

9.3.2 实现 143

9.3.3 结果 145

9.4 抽象工厂模式 146

9.4.1 问题 146

9.4.2 实现 147

9.4.3 结果 148

9.4.4 原型模式 150

9.4.5 问题 150

9.4.6 实现 151

9.5 某些模式的骗术 153

9.6 小结 154第10章 让面向对象编程更加灵活的模式 155

10.1 构造可灵活创建对象的类 155

10.2 组合模式 155

10.2.1 问题 156

10.2.2 实现 158

10.2.3 效果 161

10.2.4 组合模式小结 164

10.3 装饰模式 165

10.3.1 问题 165

10.3.2 实现 167

10.3.3 效果 170

10.4 外观模式 170

10.4.1 问题 170

10.4.2 实现 172

10.4.3 效果 172

10.5 小结 173第11章 执行及描述任务 174

11.1 解释器模式 174

11.1.1 问题 174

11.1.2 实现 175

11.1.3 解释器的问题 182

11.2 策略模式 183

11.2.1 问题 183

11.2.2 实现 184

11.3 观察者模式 187

11.4 访问者模式 194

11.4.1 问题 194

11.4.2 实现 195

11.4.3 访问者模式的问题 199

11.5 命令模式 200

11.5.1 问题 200

11.5.2 实现 200

11.6 小结 204第12章 企业模式 205

12.1 架构概述 205

12.1.1 模式 205

12.1.2 应用程序和层 206

12.2 企业架构之外的基础模式 208

12.2.1 注册表 208

12.2.2 实现 209

12.3 表现层 217

12.3.1 前端控制器 217

12.3.2 应用控制器 227

12.3.3 页面控制器 237

12.3.4 模板视图和视图助手 242

12.4 业务逻辑层 245

12.4.1 事务脚本 245

12.4.2 领域模型 249

12.5 小结 252第13章 数据库模式 253

13.1 数据层 253

13.2 数据映射器 253

13.2.1 问题 254

13.2.2 实现 254

13.2.3 效果 265

13.3 标识映射 266

13.3.1 问题 266

13.3.2 实现 266

13.3.3 效果 269

13.4 工作单元 269

13.4.1 问题 269

13.4.2 实现 270

13.4.3 效果 274

13.4.4 延迟加载 274

13.4.5 问题 274

13.4.6 实现 274

13.4.7 效果 276

13.5 领域对象工厂 276

13.5.1 问题 276

13.5.2 实现 277

13.5.3 效果 278

13.6 标识对象 279

13.6.1 问题 279

13.6.2 实现 280

13.6.3 效果 285

13.7 选择工厂和更新工厂模式 285

13.7.1 问题 285

13.7.2 实现 285

13.7.3 效果 288

13.8 数据映射器中剩下些什么 289

13.9 小结 291第四部分 实践第14章 良好和糟糕的实践 294

14.1 超越代码 294

14.2 借一个轮子 295

14.3 合作愉快 296

14.4 为你的代码插上双翼 297

14.5 文档 297

14.6 测试 298

14.7 持续集成 299

14.8 小结 300第15章 PEAR和Pyrus 301

15.1 什么是PEAR 301

15.2 了解Pyrus 302

15.3 安装PEAR包 303

15.4 使用PEAR包 306

15.5 创建自己的PEAR包 311

15.5.1 package.xml 311

15.5.2 package.xml的组成 312

15.5.3 contents元素 313

15.5.4 依赖 316

15.5.5 使用phprelease进行灵活的自定义安装 317

15.5.6 准备发布包 318

15.5.7 创建自己的PEAR频道 318

15.6 小结 323第16章 用phpDocumentor生成文档 324

16.1 为什么要使用文档 324

16.2 安装 325

16.3 生成文档 325

16.4 DocBlock注释 327

16.5 类的文档 328

16.6 文件的文档 330

16.7 属性的文档 330

16.8 方法的文档 331

16.9 在文档中创建链接 333

16.10 小结 335第17章 使用Subversion进行版本控制 336

17.1 为什么要使用版本控制 336

17.2 获得Subversion 337

17.3 配置Subversion代码库 338

17.4 开始项目 339

17.5 更新和提交 341

17.6 增加和删除文件及目录 344

17.6.1 添加文件 344

17.6.2 删除文件 345

17.6.3 添加目录 345

17.6.4 删除目录 345

17.7 标记和导出项目 345

17.7.1 标记项目 345

17.7.2 导出项目 346

17.8 创建项目分支 347

17.9 小结 350第18章 使用PHPUnit进行测试 351

18.1 功能测试与单元测试 351

18.2 手工测试 352

18.3 引入PHPUnit 354

18.3.1 创建测试用例 354

18.3.2 断言方法 355

18.3.3  测试异常 356

18.3.4 运行测试套件 357

18.3.5 约束 358

18.3.6 模拟与桩 360

18.3.7 失败是成功之母 362

18.4 编写Web测试 365

18.4.1 为测试重构Web应用 366

18.4.2 简单的Web测试 368

18.4.3 Selenium 370

18.5 警告 374

18.6 小结 376第19章 用Phing实现项目的自动构建 377

19.1 什么是Phing 377

19.2 获取和安装Phing 378

19.3 编写build文档 378

19.3.1 目标 380

19.3.2 属性 382

19.3.3 类型 387

19.3.4 任务 391

19.4 小结 394第五部分 结论第20章 持续集成 396

20.1 什么是持续集成 396

20.2 CruiseControl和phpUnderControl 404

20.2.1 安装CruiseControl 404

20.2.2 安装phpUnderControl 406

20.2.3 安装项目 408

20.3 小结 418第21章 对象、模式与实践 419

21.1 对象 419

21.1.1 选择 420

21.1.2 封装和委托 420

21.1.3 解耦 420

21.1.4 复用性 421

21.1.5 美学 421

21.2 模式 421

21.2.1 模式给我们带来了什么 422

21.2.2 模式和设计原则 422

21.3 实践 424

21.3.1 测试 424

21.3.2 文档 424

21.3.3 版本控制 425

21.3.4 自动构建 425

21.3.5 持续集成 425

21.3.6 我们还遗漏了什么 425

21.4 小结 426第六部分 附录附录A 参考文献 428

附录B 简单的解析器 431