本书全面深入地剖析了面向对象的PHP编程与设计。首先介绍了PHP的OO特性,包括类声明、对象实例化、继承、方法与属性封装以及静态方法与属性、抽象类、接口、异常处理、对象克隆等高级主题。然后介绍了设计模式,阐述了模式的概念,展示了如何在PHP中实现几个关键的模式,用专门的章节介绍了企业模式和数据库模式。本书最后一部分围绕PHP应用程序开发,详细介绍了一批极为实用的辅助开发工具,讨论了具有普遍意义的最佳开发实践。
本书适合每位PHP程序员进阶参考,帮助他们掌握PHP面向对象设计和开发的精髓,跻身高端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 本书第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
《让听得见炮声的人决策:任正非的华为管理之道》内容简介:本书全面梳理、总结了任正非的管理思想、经商智慧,让读者可以深入了解
《晚安妈妈,晚安宝贝:小秘密跑掉了》内容简介:本书含27个小故事,让孩子的睡前时光温暖甜蜜,治愈孩子小小的心灵。作者充分利用
《著作权纠纷案例与实务》内容简介:本书共分5章,主要包括著作权概述、著作权侵权纠纷、邻接权纠纷、著作权合同纠纷和网络著作权纠
《网络安全应急响应基础理论及关键技术》内容简介:本书主要针对网络安全专业的从业者、学生、爱好者,概述了网络安全应急响应方面
《轻战略:量子时代的敏捷决策》内容简介:本书适合创业型小企业和大型企业的内部孵化企业专业人士使用,提出了创新型组织需要更加
《第一等人》内容简介:☆侯家的第一位进士、第一位官员、侯峒曾的曾祖父侯尧封,生平对儿孙说的最多的一句话是:“不愿汝辈它日为
MATLAB R2016a智能计算25个案例分析 本书特色 本书以MATLAB R2016a为平台,从实用的角度出发,介绍智能计算的方法,并在讲解各实现方法中给...
《被颠覆的汽车帝国:中国汽车电商与车联网生态报告》内容简介:本书对移动互联网时代下的车企的现状及当代车企的营销活动进行了深
《政府2.0:新常态下的政府治理创新》内容简介:国家治理体系和治理能力现代化的关键在于政府治理创新。在经济新常态下,政府能否通
《故事工坊》内容简介:本书通过工坊式写作课堂,对“讲故事”的技巧、方法、练习进行讲解,涉及虚构与非虚构类型的故事创作。写作
《国外电子与通信教材系列·数字信号处理(第4版)》全面系统地阐述了数字信号处理的基础知识,其中前10章讲述了确定性数字信号处理
网格是所有设计的基础,对设计师来说,学会运用网格是进行所有设计的基础。运用从一栏到多栏网格,与文字、色彩、图像及其他诸多
《电子商务创世纪:1999-2012中国互联网最激动人心的一段历史》以编年体形式,浓墨重彩地逐年再现了由萌芽至今的中国电子商务的行
《魔术就这么简单》内容简介:钱币魔术,顾名思义就是围绕钱币所做出的一连串魔术表演。在奥妙神奇、五彩缤纷的魔术世界里,钱币魔
《历史学家的经线》内容简介:孙隆基先生在本书中用自己独特方式对中国近代政治史和思想史上核心的辛亥革命、五四运动、鲁迅问题、
《Angular从零到一》内容简介:作为一个出生于20世纪70年代的大叔,我在软件这个领域已经摸爬滚打了16年,从程序员、项目经理、产品
Web安全实践 内容简介 本书提供了有效的、经过验证的解决方案,以修补端到端网络安全架构中的Windows Web服务器和浏览器的常见脆弱之处。本书分为5个部分...
国际信息图设计金奖得主教你做出不失败的信息图!=================================读图时代,你必须有这本!◎72个章节,剖析图
Excel 2010图表实战技巧精粹-(附光盘) 本书特色 卓越图表应当具备3个重要的要素:真实、简明、丰富。 真实:图表所表达的观点和传递的信息必须真实、准确...
本书系统深入地介绍了各种代码优化编程技术。全书分为4章。第1章集中介绍如何确定程序中消耗CPU时钟最多的热点代码的所谓程序剖析