《PHP精粹》是2012年出版的科技类图书,作者是Lorna Mitchell / Davey Shafik / Matthew Turland。
基本介绍
- 书名PHP精粹
- 作者Lorna Mitchell /
- 译者彭沖 / 胡琳
- ISBN9787111399070
- 页数238
- 定价59.00元
- 出版时间2012-11-1
- 副标题编写高效PHP代码
- 丛书 华章程式设计师书库
- 类别it技术类
内容介绍
本书是资深PHP技术专家多年工作经验的结晶,从资料库、API、设计模式、安全性、应用程式性能、自动化测试、质量保证等核心方面了编写高效PHP代码的技巧和最佳实践,旨在让有一定基础的PHP开发者在进阶修炼的路上儘可能少走弯路!全书包含大量精心设计的示例,不仅能帮助读者理解具体的技术知识,而且能让读者学到作者解决各种问题的思路,授人以鱼授人以渔。
本书共8章,每章一个主题第1章重新阐述了面向对象编程中的核心概念和技术,目的是确保基础知识匮乏的开发者能正确理解它们;第2章了PHP开发中与资料库相关的各种最佳实践,如数据持久化、数据存储、MySQL使用方法、PDO,以及资料库的设计等;第3章详细讲解了API及其使用方式;第4章了PHP开发中常用的各种设计模式及其使用原则;第5章讲解了如何编写安全的PHP代码,对PHP开发中各种常见的安全问题进行了和分析;第6章从基準测试、系统测试、资料库、档案系统等方面探讨了PHP应用程式的性能问题;第7章讲解了PHP的自动化测试,包含单元测试、资料库测试、负载均衡测试等;第8章了PHP开发中与质量保证相关的最佳实践,包括质量测量、编码标準、原始码管理、自动部署等。除此之外,本书还对PEAR、PECL,以及PHP标準库进行了讲解。
作者介绍
Lorna Mitchell,资深PHP技术专家,常驻英国利兹的PHP顾问,从事软体开发相关工作多年,尤其擅长与数据和API相关的知识。活跃于PHP社区,是美国西北部PHP技术社群的组织者,曾组织过多次社团会议并发表演讲,是开源项目Joind.in的领导者。她还是一位技术作家,热衷于分享自己的经验,经常在多种流行杂誌和网站上发表技术文章。
Davey Shafik,资深LAMP技术专家,精通PHP,在HTML、CSS、JavaScript等Web相关技术领域也积累了十分丰富的经验。他还是一位经验丰富的技术作家,不仅发表了大量的技术文章,而且着有《The PHP Anthology: 101 Essential Tips, Tricks & Hacks》和《PHP Architect’s Zend PHP 5 Certification Study Guide》等着作。
Matthew Turland,资深PHP技术专家,有近10年PHP开发经验,是PHP 5和Zend Framework的Zend认证工程师。他是Zend Framework、 PHPUnit和Phergie等PHP开源项目的参与者,为这些项目撰写了大量文章。他还是一位经验丰富的技术作家,不仅撰写了《PHP Architect’s Guide to Web Scraping with PHP》等着作,而且还在《PHP Architect》等杂誌上发表了大量文章。
作品目录
译者序
前 言
第1章 面向对象编程1
1.1 为什幺要使用面向对象编程1
1.2 OOP简介1
1.2.1 声明类1
1.2.2 类的构造2
1.2.3 对象实例化3
1.2.4 自动载入3
1.2.5 使用对象4
1.2.6 使用静态属性和方法4
1.2.7 对象和命名空间5
1.3 对象的继承7
1.4 对象和函式9
1.4.1 类型提示9
1.4.2 多态性9
1.4.3 对象和引用10
1.4.4 作为函式参数传递的对象11
1.4.5 流畅的接口12
1.5 public、private以及protected12
1.5.1 public13
1.5.2 private13
1.5.3 protected13
1.5.4 选择正确的可见性14
1.5.5 使用getter和setter来控制可见性14
1.5.6 使用神奇的_get和_set方法15
1.6 接口16
1.6.1 SPL Countable接口示例16
1.6.2 计数对象16
1.6.3 声明和使用接口17
1.6.4 识别对象和接口17
1.7 异常18
1.7.1 处理异常18
1.7.2 为什幺要处理异常19
1.7.3 抛出异常19
1.7.4 扩展异常19
1.7.5 捕捉特定类型的异常20
1.7.6 设定一个全局异常处理程式21
1.7.7 使用回调22
1.8 更多神奇的方法22
1.8.1 使用__call()和__callStatic()方法22
1.8.2 使用__toString()方法输出对象23
1.8.3 序列化对象24
1.9 本章小结25
第2章 资料库26
2.1 数据持久化和Web应用程式26
2.2 选择如何存储数据26
2.3 用MySQL建立一个食谱网站27
2.4 PHP资料库对象29
2.4.1 使用PDO连线到MySQL29
2.4.2 从表中选择数据30
2.4.3 数据提取模式30
2.4.4 参数和预处理语句31
2.4.5 绑定值和预处理语句的变数32
2.4.6 插入一行并获取ID34
2.4.7 有多少行被插入、更新或删除34
2.4.8 删除数据35
2.5 处理PDO中的错误35
2.5.1 处理预处理时的问题36
2.5.2 处理执行时的问题36
2.5.3 处理提取数据时的问题37
2.6 高级PDO特徵37
2.6.1 事务和PDO38
2.6.2 存储过程和PDO39
2.7 设计资料库39
2.7.1 主键与索引40
2.7.2 MySQL解析40
2.7.3 内部连线43
2.7.4 外部连线43
2.7.5 聚合函式和Group By44
2.7.6 规格化数据46
2.8 资料库—排序46
第3章 API47
3.1 开始之前47
3.1.1 使用API工具47
3.1.2 添加API到你的系统47
3.2 面向服务的架构47
3.3 数据格式48
3.3.1 使用JSON49
3.3.2 使用XML50
3.4 HTTP超文本传输协定53
3.4.1 HTTP信封53
3.4.2 传送HTTP请求54
3.4.3 HTTP状态码57
3.4.4 HTTP档案头58
3.4.5 HTTP动词61
3.5 理解并选择服务类型61
3.5.1 PHP和SOAP62
3.5.2 使用WSDL描述SOAP服务63
3.6 调试HTTP65
3.6.1 使用日誌收集信息65
3.6.2 检查HTTP流量65
3.7 RPC服务66
3.7.1 使用一个RPC服务Flickr示例66
3.7.2 建立一个RPC服务68
3.8 Ajax和Web服务69
3.9 开发和使用RESTful服务75
3.9.1 超越Pretty URL75
3.9.2 RESTful原则76
3.9.3 建立一个RESTful服务76
3.10 设计一个Web服务82
3.11 提供的服务83
第4章 设计模式84
4.1 什幺是设计模式84
4.1.1 选择一个最合适的84
4.1.2 单例模式84
4.1.3 Traits86
4.1.4 注册表模式87
4.1.5 工厂模式90
4.1.6 叠代模式91
4.1.7 观察者模式98
4.1.8 依赖注入101
4.1.9 模型–视图–控制器104
4.2 模式的形成114
第5章 安全性115
5.1 是否有些偏执115
5.2 过滤输入、避免输出116
5.3 跨站脚本117
5.3.1 攻击117
5.3.2 修复118
5.3.3 线上资源119
5.4 伪造跨站请求119
5.4.1 攻击119
5.4.2 修复120
5.4.3 线上资源121
5.5 会话固定122
5.5.1 攻击122
5.5.2 修复122
5.5.3 线上资源123
5.6 会话劫持123
5.6.1 攻击123
5.6.2 修复124
5.6.3 线上资源125
5.7 SQL注入125
5.7.1 攻击125
5.7.2 修复126
5.7.3 线上资源127
5.8 储存密码127
5.8.1 攻击127
5.8.2 修复127
5.8.3 线上资源128
5.9 暴力破解攻击129
5.9.1 攻击129
5.9.2 修复130
5.9.3 线上资源131
5.10 SSL131
5.10.1 攻击131
5.10.2 修复132
5.10.3 线上资源132
5.11 资源132
第6章 性能134
6.1 基準测试134
6.2 系统测试139
6.2.1 代码快取139
6.2.2 INI设定143
6.3 资料库144
6.4 档案系统144
6.5 程式概要分析151
6.5.1 安装XHProf152
6.5.2 安装XHGui155
6.6 本章小结161
第7章 自动测试163
7.1 单元测试163
7.1.1 安装PHPUnit163
7.1.2 编写测试用例163
7.1.3 运行测试165
7.1.4 测试替身167
7.1.5 编写可测试的代码170
7.1.6 测试视图和控制器173
7.2 资料库测试177
7.2.1 资料库测试用例177
7.2.2 连线178
7.2.3 数据集178
7.2.4 断言180
7.3 系统测试181
7.3.1 初始设定181
7.3.2 命令182
7.3.3 定位器183
7.3.4 断言184
7.3.5 资料库集成184
7.3.6 调试186
7.3.7 自动编写测试187
7.4 负载测试187
7.4.1 ab187
7.4.2 Siege188
7.5 本章小结189
第8章 质量保证190
8.1 使用静态分析工具测量质量190
8.1.1 phploc190
8.1.2 phpcpd191
8.1.3 phpmd192
8.2 编码标準193
8.2.1 使用PHP代码探测器检查编码标準193
8.2.2 查看违反编码标準的地方195
8.2.3 PHP代码探测器标準196
8.3 文档和代码196
8.3.1 使用phpDocumentor197
8.3.2 其他文档工具199
8.4 原始码管理199
8.4.1 使用集中式版本控制200
8.4.2 为了原始码管理使用版本控制201
8.4.3 设计版本库的结构202
8.4.4 分散式的版本控制204
8.4.5 代码的社会性工具205
8.4.6 使用Git进行原始码控制206
8.4.7 将版本库作为构建过程的根207
8.5 自动部署207
8.5.1 立刻切换到一个新版本208
8.5.2 管理资料库变更208
8.5.3 自动部署和Phing209
8.6 準备部署211
附录A PEAR和PECL212
附录B PHP标準库229
附录C 进一步参考信息236
前 言
第1章 面向对象编程1
1.1 为什幺要使用面向对象编程1
1.2 OOP简介1
1.2.1 声明类1
1.2.2 类的构造2
1.2.3 对象实例化3
1.2.4 自动载入3
1.2.5 使用对象4
1.2.6 使用静态属性和方法4
1.2.7 对象和命名空间5
1.3 对象的继承7
1.4 对象和函式9
1.4.1 类型提示9
1.4.2 多态性9
1.4.3 对象和引用10
1.4.4 作为函式参数传递的对象11
1.4.5 流畅的接口12
1.5 public、private以及protected12
1.5.1 public13
1.5.2 private13
1.5.3 protected13
1.5.4 选择正确的可见性14
1.5.5 使用getter和setter来控制可见性14
1.5.6 使用神奇的_get和_set方法15
1.6 接口16
1.6.1 SPL Countable接口示例16
1.6.2 计数对象16
1.6.3 声明和使用接口17
1.6.4 识别对象和接口17
1.7 异常18
1.7.1 处理异常18
1.7.2 为什幺要处理异常19
1.7.3 抛出异常19
1.7.4 扩展异常19
1.7.5 捕捉特定类型的异常20
1.7.6 设定一个全局异常处理程式21
1.7.7 使用回调22
1.8 更多神奇的方法22
1.8.1 使用__call()和__callStatic()方法22
1.8.2 使用__toString()方法输出对象23
1.8.3 序列化对象24
1.9 本章小结25
第2章 资料库26
2.1 数据持久化和Web应用程式26
2.2 选择如何存储数据26
2.3 用MySQL建立一个食谱网站27
2.4 PHP资料库对象29
2.4.1 使用PDO连线到MySQL29
2.4.2 从表中选择数据30
2.4.3 数据提取模式30
2.4.4 参数和预处理语句31
2.4.5 绑定值和预处理语句的变数32
2.4.6 插入一行并获取ID34
2.4.7 有多少行被插入、更新或删除34
2.4.8 删除数据35
2.5 处理PDO中的错误35
2.5.1 处理预处理时的问题36
2.5.2 处理执行时的问题36
2.5.3 处理提取数据时的问题37
2.6 高级PDO特徵37
2.6.1 事务和PDO38
2.6.2 存储过程和PDO39
2.7 设计资料库39
2.7.1 主键与索引40
2.7.2 MySQL解析40
2.7.3 内部连线43
2.7.4 外部连线43
2.7.5 聚合函式和Group By44
2.7.6 规格化数据46
2.8 资料库—排序46
第3章 API47
3.1 开始之前47
3.1.1 使用API工具47
3.1.2 添加API到你的系统47
3.2 面向服务的架构47
3.3 数据格式48
3.3.1 使用JSON49
3.3.2 使用XML50
3.4 HTTP超文本传输协定53
3.4.1 HTTP信封53
3.4.2 传送HTTP请求54
3.4.3 HTTP状态码57
3.4.4 HTTP档案头58
3.4.5 HTTP动词61
3.5 理解并选择服务类型61
3.5.1 PHP和SOAP62
3.5.2 使用WSDL描述SOAP服务63
3.6 调试HTTP65
3.6.1 使用日誌收集信息65
3.6.2 检查HTTP流量65
3.7 RPC服务66
3.7.1 使用一个RPC服务Flickr示例66
3.7.2 建立一个RPC服务68
3.8 Ajax和Web服务69
3.9 开发和使用RESTful服务75
3.9.1 超越Pretty URL75
3.9.2 RESTful原则76
3.9.3 建立一个RESTful服务76
3.10 设计一个Web服务82
3.11 提供的服务83
第4章 设计模式84
4.1 什幺是设计模式84
4.1.1 选择一个最合适的84
4.1.2 单例模式84
4.1.3 Traits86
4.1.4 注册表模式87
4.1.5 工厂模式90
4.1.6 叠代模式91
4.1.7 观察者模式98
4.1.8 依赖注入101
4.1.9 模型–视图–控制器104
4.2 模式的形成114
第5章 安全性115
5.1 是否有些偏执115
5.2 过滤输入、避免输出116
5.3 跨站脚本117
5.3.1 攻击117
5.3.2 修复118
5.3.3 线上资源119
5.4 伪造跨站请求119
5.4.1 攻击119
5.4.2 修复120
5.4.3 线上资源121
5.5 会话固定122
5.5.1 攻击122
5.5.2 修复122
5.5.3 线上资源123
5.6 会话劫持123
5.6.1 攻击123
5.6.2 修复124
5.6.3 线上资源125
5.7 SQL注入125
5.7.1 攻击125
5.7.2 修复126
5.7.3 线上资源127
5.8 储存密码127
5.8.1 攻击127
5.8.2 修复127
5.8.3 线上资源128
5.9 暴力破解攻击129
5.9.1 攻击129
5.9.2 修复130
5.9.3 线上资源131
5.10 SSL131
5.10.1 攻击131
5.10.2 修复132
5.10.3 线上资源132
5.11 资源132
第6章 性能134
6.1 基準测试134
6.2 系统测试139
6.2.1 代码快取139
6.2.2 INI设定143
6.3 资料库144
6.4 档案系统144
6.5 程式概要分析151
6.5.1 安装XHProf152
6.5.2 安装XHGui155
6.6 本章小结161
第7章 自动测试163
7.1 单元测试163
7.1.1 安装PHPUnit163
7.1.2 编写测试用例163
7.1.3 运行测试165
7.1.4 测试替身167
7.1.5 编写可测试的代码170
7.1.6 测试视图和控制器173
7.2 资料库测试177
7.2.1 资料库测试用例177
7.2.2 连线178
7.2.3 数据集178
7.2.4 断言180
7.3 系统测试181
7.3.1 初始设定181
7.3.2 命令182
7.3.3 定位器183
7.3.4 断言184
7.3.5 资料库集成184
7.3.6 调试186
7.3.7 自动编写测试187
7.4 负载测试187
7.4.1 ab187
7.4.2 Siege188
7.5 本章小结189
第8章 质量保证190
8.1 使用静态分析工具测量质量190
8.1.1 phploc190
8.1.2 phpcpd191
8.1.3 phpmd192
8.2 编码标準193
8.2.1 使用PHP代码探测器检查编码标準193
8.2.2 查看违反编码标準的地方195
8.2.3 PHP代码探测器标準196
8.3 文档和代码196
8.3.1 使用phpDocumentor197
8.3.2 其他文档工具199
8.4 原始码管理199
8.4.1 使用集中式版本控制200
8.4.2 为了原始码管理使用版本控制201
8.4.3 设计版本库的结构202
8.4.4 分散式的版本控制204
8.4.5 代码的社会性工具205
8.4.6 使用Git进行原始码控制206
8.4.7 将版本库作为构建过程的根207
8.5 自动部署207
8.5.1 立刻切换到一个新版本208
8.5.2 管理资料库变更208
8.5.3 自动部署和Phing209
8.6 準备部署211
附录A PEAR和PECL212
附录B PHP标準库229
附录C 进一步参考信息236