PHP核心技术与最佳实践

PHP核心技术与最佳实践

列旭松, 陈文, 著

出版社:机械工业出版社

年代:2012

定价:89.0

书籍简介:

本书是一本致力于为希望成为中高级PHP程序员的读者提供高效而有针对性的指导的经典著作,深刻解读了PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和最佳实践。全书分为5个部分:第一部分(1~2章)从不同的角度阐述了面向对象软件设计思想的核心概念、技术和原则,分析了面向对象的特性、设计模式的理念,指出了如何设计低耦合、高可扩展性的软件;第二部分(3~6章)详细讲解了PHP中正则表达式的规范和使用技巧,PHP网络编程的原理、方法、技巧和一些重要的操作,PDO、数据库应用优化,数据库设计和MySQL的高级应用,PHP扩展引擎的原理与实践;第三部分(第7章)解析了PHP的底层实现和Zend虚拟机API,并用PHP扩展开发的实例带领读者走进PHP的底层世界;第四部分(8~11章)重点讨论了缓存的设计、Memcached的原理与实践、NoSQL数据库Redis源码分析与应用实践、高性能PHP网站的架构和设计等内容;第五部分(12~14章)详细讲解了PHP代码的调试和测试、Hash算法和数据库的实现,以及PHP的编码规范。

书籍目录:

前言

第1章 面向对象思想的核心概念 1

1.1 面向对象的“形”与“本” 1

1.1.1 对象的“形” 2

1.1.2 对象的“本” 4

1.1.3 对象与数组 5

1.1.4 对象与类 5

1.2 魔术方法的应用 7

1.2.1 set和get方法 8

1.2.2 call和callStatic方法 9

1.2.3 toString方法 11

1.3 继承与多态 14

1.3.1 类的组合与继承 14

1.3.2 各种语言中的多态 19

1.4 面向接口编程 23

1.4.1 接口的作用 23

1.4.2 对PHP接口的思考 25

1.5 反射 28

1.5.1 如何使用反射API 28

1.5.2 反射有什么作用 30

1.6 异常和错误处理 32

1.6.1 如何使用异常处理机制 32

1.6.2 怎样看PHP的异常 38

1.6.3 PHP中的错误级别 38

1.6.4 PHP中的错误处理机制 40

1.7 本章小结 42

第2章 面向对象的设计原则 44

2.1 面向对象设计的五大原则 44

2.1.1 单一职责原则 44

2.1.2 接口隔离原则 52

2.1.3 开放-封闭原则 55

2.1.4 替换原则 57

2.1.5 依赖倒置原则 59

2.2 一个面向对象留言本的实例 62

2.3 面向对象的思考 65

2.4 本章小结 67

第3章 正则表达式基础与应用 68

3.1 认识正则表达式 68

3.1.1 PHP中的正则函数 68

3.1.2 正则表达式的组成 69

3.1.3 测试工具的使用 69

3.2 正则表达式中的元字符 70

3.2.1 什么是元字符 71

3.2.2 起始和结束元字符 72

3.2.3 点号 73

3.2.4 量词 74

3.3 正则表达式匹配规则 74

3.3.1 字符组 74

3.3.2 转义 75

3.3.3 反义 76

3.3.4 分支 77

3.3.5 分组 78

3.3.6 反向引用 79

3.3.7 环视 81

3.3.8 贪婪 懒惰匹配模式 83

3.4 构造正则表达式 84

3.4.1 正则表达式的逻辑关系 85

3.4.2 运算符优先级 87

3.4.3 正则表达式的常用模式 88

3.5 正则在实际开发中的应用 92

3.5.1 移动手机校验 92

3.5.2 匹配E-mail地址 93

3.5.3 转义在数据安全中的应用 93

3.5.4 URL重写与搜索引擎优化 95

3.5.5 删除文件中的空行和注释 98

3.6 正则表达式的效率与优化 99

3.7 本章小结 103

第4章 PHP网络技术及应用 105

4.1 HTTP协议详解 105

4.1.1 HTTP协议与SPDY协议 105

4.1.2 HTTP协议如何工作 106

4.1.3 HTTP应用:模拟灌水机器人 110

4.1.4 垃圾信息防御措施 116

4.2 抓包工具 119

4.2.1 抓包工具分类 119

4.2.2 Fiddler功能与原理 119

4.2.3 安装Fiddler 120

4.2.4 Fiddler基本界面 121

4.2.5 使用Fiddler进行HTTP断点调试 124

4.3 Socket进程通信机制及应用 127

4.3.1 进程通信相关概念 127

4.3.2 Socket演示:实现服务器端与客户端的交互 128

4.3.3 Socket函数原型 131

4.3.4 PHP中的Socket函数 131

4.3.5 Socket交互应用:使用Socket抓取数据 134

4.4 cURL工具及应用 136

4.4.1 建立cURL请求的基本步骤 136

4.4.2 检查cURL错误和获取返回信息 137

4.4.3 在cURL中伪造头信息 138

4.4.4 在cURL中用POST方法发送数据 140

4.4.5 使用cURL上传文件 141

4.4.6 cURL批处理 142

4.4.7 cURL设置项 144

4.4.8 网络应用:使用cURL抓取腾讯微博 145

4.5 简单邮件传输协议SMTP 151

4.5.1 SMTP协议如何工作 151

4.5.2 SMTP协议常用命令 153

4.5.3 SMTP协议应用:使用Socket发送邮件 153

4.6 WebService的前世今生 157

4.6.1 WebService简介 157

4.6.2 认识PHPRPC协议 159

4.6.3 Web服务的实现模式 165

4.6.4 简单对象访问协议SOAP 166

4.6.5 调试工具soapUI 168

4.7 Cookie详解 170

4.7.1 Cookie的基本概念及设置 170

4.7.2 PHP和JavaScript对Cookie的操作 172

4.7.3 Cookie存储机制及应用 174

4.7.4 Cookie跨域与P3P协议 175

4.7.5 本地存储localStorage 177

4.8 Session详解 179

4.8.1 Session的基本概念及设置 179

4.8.2 Session的工作原理 180

4.8.3 Session入库 181

4.8.4 Cookie与Session问答 185

4.9 本章小结 186

第5章 PHP与数据库基础 187

5.1 什么是PDO 187

5.1.1 PDO预定义类 188

5.1.2 如何使用PDO 189

5.1.3 PDO参数绑定与预编译 189

5.1.4 PDO事务处理 191

5.1.5 PDO的效率问题 192

5.2 数据库应用优化 193

5.2.1 基本语句优化10个原则 193

5.2.2 索引与性能分析 194

5.2.3 服务器和配置的优化 197

5.2.4 MySQL瓶颈及应对措施 199

5.3 数据库设计 200

5.3.1 范式与反范式 200

5.3.2 数据库分区 201

5.3.3 分表的应用 203

5.4 MySQL的高级应用 205

5.4.1 MySQL自增长序列 205

5.4.2 MySQL视图 207

5.4.3 MySQL存储过程和事件调度 210

5.4.4 用MySQL模拟消息队列 212

5.4.5 SQL注入漏洞与防范 216

5.5 本章小结 220

第6章 PHP模板引擎的原理与实践 221

6.1 代码分层的思想 221

6.2 实现一个简单的模板引擎骨架 224

6.2.1 搭建模板引擎基础类骨架 224

6.2.2 编译类骨架 226

6.2.3 测试模板引擎 229

6.3 模板引擎的编译 230

6.3.1 实现变量标签 230

6.3.2 实现foreach标签 231

6.3.3 实现if…else标签 233

6.3.4 对PHP原生语法的支持 234

6.4 完善模板引擎 235

6.4.1 模板缓存机制的实现 235

6.4.2 调试和缓存清理 236

6.4.3 如何使用模板 244

6.5 常用模板引擎 245

6.5.1 Discuz模板引擎 245

6.5.2 Smarty模板引擎 246

6.5.3 DedeCms模板引擎 247

6.5.4 Blitz模板引擎 248

6.5.5 模板引擎的一些思考 249

6.6 本章小结 251

第7章 PHP扩展开发 252

7.1 为什么要开发PHP扩展 252

7.2 搭建PHP扩展框架 252

7.2.1 PHP源代码目录 252

7.2.2 ext_skel工具 253

7.2.3 Windows平台环境配置 253

7.2.4 Linux平台环境配置 256

7.2.5 PHP的生命周期 257

7.3 PHP内核中的变量 260

7.3.1 PHP变量在内核中的存储方式 260

7.3.2 PHP内核变量访问宏 262

7.3.3 引用计数器与写时复制 263

7.4 PHP内核中的HashTable分析 265

7.4.1 PHP内核HashTable的数据结构 265

7.4.2 HashTable的代码实现 270

7.5 Zend API详解与扩展编写 274

7.5.1 什么是Zend引擎 274

7.5.2 Zend引擎内存管理 275

7.5.3 PHP扩展的架构 276

7.5.4 接收用户传递的参数 283

7.5.5 在PHP扩展中创建变量 290

7.5.6 在PHP扩展中为变量赋值 293

7.5.7 错误和输出API 304

7.5.8 运行时信息函数 306

7.5.9 调用用户自定义函数 307

7.5.10 PHP配置项 309

7.5.11 创建常量的宏 312

7.6 编写一个完整的扩展 313

7.6.1 链表结构的实现 313

7.6.2 创建PHP扩展框架 319

7.6.3 编写代码 319

7.6.4 编译安装扩展 327

7.6.5 测试扩展 328

7.7 本章小结 329

第8章 缓存详解 330

8.1 认识缓存 330

8.1.1 为什么使用缓存 330

8.1.2 命中率 331

8.1.3 缓存更新策略 332

8.1.4 缓存最大数据量 333

8.2 文件缓存 333

8.2.1 文件缓存机制 333

8.2.2 文件缓存开源产品Secache 335

8.3 Opcode缓存 337

8.3.1 eAccelerator下载及使用 337

8.3.2 如何查看Opcode 338

8.4 客户端缓存 340

8.4.1 客户端缓存规则 340

8.4.2 HTTP协议中的缓存使用 341

8.4.3 HTTP缓存实例 343

8.4.4 HTML 5中的Application Cache 345

8.5 Web服务器缓存 347

8.5.1 Apache缓存 347

8.5.2 Nginx缓存 348

8.6 本章小结 349

第9章 Memcached使用与实践 350

9.1 为什么要用Memcached 350

9.2 Memcached的安装及使用 350

9.2.1 安装Memcached服务器 351

9.2.2 安装Memcached客户端 352

9.2.3 使用memcache扩展访问Memcached服务器 353

9.2.4 使用Memcached加速Web应用 356

9.3 深入了解Memcached 357

9.3.1 Memcached如何支持高并发 357

9.3.2 使用Slab分配算法保存数据 357

9.3.3 删除过期item 361

9.3.4 使用LRU算法淘汰数据 362

9.3.5 Memcached多线程模型 363

9.4 Memcached分布式布置方案 366

9.4.1 普通Hash分布 366

9.4.2 一致性Hash分布 367

9.4.3 一致性Hash分布算法实例 369

9.5 本章小结 371

第10章 Redis使用与实践 372

10.1 Redis的安装及使用 372

10.1.1 Redis安装步骤 372

10.1.2 修改Redis配置文件 373

10.1.3 运行Redis服务器 374

10.1.4 key相关命令 374

10.1.5 Redis支持的数据类型 375

10.1.6 Redis排序命令详解 382

10.2 事务处理 384

10.2.1 事务处理原理 384

10.2.2 事务处理实现 385

10.3 持久化 387

10.3.1 内存快照 387

10.3.2 日志追加 387

10.4 主从同步 388

10.4.1 Redis主从同步原理 388

10.4.2 Slave端的工作流程 389

10.4.3 Master端的工作流程 392

10.5 虚拟内存 397

10.5.1 配置文件信息 397

10.5.2 开启VM的后台操作 398

10.5.3 Redis Object和VM Pointer 399

10.5.4 交换过程 400

10.5.5 阻塞式VM 403

10.5.6 非阻塞式VM 405

10.6 扩展库phpredis安装及使用 408

10.7 Redis应用实践 409

10.7.1 使用消息队列发布微博 409

10.7.2 Redis替代文件存储Session 410

10.8 深入了解Redis内核 413

10.8.1 内存淘汰 413

10.8.2 对象引用计数器 415

10.8.3 自动关闭超时连接 418

10.8.4 清除过期数据 419

10.9 本章小结 421

第11章 高性能网站架构方案 422

11.1 如何优化网站响应时间 422

11.1.1 吞吐率 423

11.1.2 压力测试 423

11.1.3 持久连接 426

11.2 MySQL响应速度提高方案:HandlerSocket 429

11.2.1 HandlerSocket工作原理 430

11.2.2 HandlerSocket安装和配置 430

11.2.3 PHP-HandlerSocket性能测试 432

11.3 MySQL稳定性提高方案:主从复制 433

11.3.1 主从复制工作原理 433

11.3.2 主从复制配置 434

11.3.3 连接主从服务器 436

11.4 Web应用加速方案:Varnish 438

11.4.1 传统代理与反向代理 438

11.4.2 Varnish安装和配置 439

11.4.3 Varnish性能测试 440

11.4.4 修改缓存规则 442

11.4.5 监控Varnish运行状态 444

11.5 异步计算方案:Gearman 445

11.5.1 Gearman工作原理 445

11.5.2 安装Gearman和PHP扩展 447

11.5.3 使用Gearman异步发送邮件 447

11.6 本章小结 449

第12章 代码调试和测试 450

12.1 调试PHP代码 450

12.1.1 PHP调试函数 450

12.1.2 断点调试与变量跟踪工具Xdebug 454

12.2 前端调试 457

12.2.1 Firebug调试API 457

12.2.2 使用Firebug调试DOM结构 459

12.2.3 使用Firebug调试JavaScript 460

12.2.4 使用Fiddler调试远程服务器上的文件 462

12.3 日志管理 463

12.3.1 PHP日志 463

12.3.2 Apache服务器日志 464

12.3.3 MySQL日志 465

12.4 代码性能测试技术 468

12.4.1 时间点测试 468

12.4.2 文件查看工具WinCacheGrind 469

12.4.3 性能测试注意事项 471

12.5 单元测试 472

12.5.1 单元测试框架PHPUnit的安装 472

12.5.2 结合NetBeans使用PHPUnit进行单元测试 473

12.5.3 PHPUnit中的断言函数 476

12.5.4 PHPUnit常用方法 478

12.5.5 PHPUnit常用注解 478

12.6 压力测试 480

12.6.1 使用JMeter压力测试HTTP 480

12.6.2 压力测试MySQL 484

12.6.3 JMeter+Badboy组合测试 487

12.7 本章小结 489

第13章 Hash算法与数据库实现 490

13.1 Hash函数 490

13.2 Hash算法 490

13.2.1 直接取余法 490

13.2.2 乘积取整法 490

13.2.3 经典Hash算法Times33 491

13.3 Hash表 491

13.3.1 Hash表结构 491

13.3.2 使用PHP实现Hash表 492

13.3.3 Hash表冲突 493

13.3.4 拉链法解决冲突 494

13.4 一个小型数据库的实现 496

13.4.1 pack函数的用法 497

13.4.2 unpack函数的用法 499

13.4.3 索引文件和数据文件 500

13.4.4 数据库接口方法 501

13.4.5 源代码解析 502

13.4.6 测试代码 509

13.5 本章小结 510

第14章 PHP编码规范 511

14.1 文件格式 511

14.1.1 文件标记 511

14.1.2 文件和目录命名 512

14.1.3 文件目录结构 512

14.2 命名规范 513

14.2.1 变量命名 513

14.2.2 类及接口命名 514

14.2.3 数据库命名 514

14.2.4 习惯与约定 515

14.3 注释规范 516

14.3.1 程序注释 516

14.3.2 文件注释 518

14.3.3 类 接口注释 518

14.3.4 方法和函数注释 518

14.3.5 标注的使用 519

14.4 代码风格 520

14.4.1 缩进和空格 520

14.4.2 语句断行 520

14.4.3 更好的习惯 521

14.5 本章小结 521

内容摘要:

《PHP核心技术与最佳实践》系统归纳和深刻解读PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和最佳实践,为PHP程序员进阶修炼提供全面而高效的指导!
《PHP核心技术与最佳实践》是一本致力于为希望成为中高级PHP程序员的读者提供高效而有针对性指导的经典著作。系统归纳和深刻解读了PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和最佳实践。全书分为5个部分:第一部分(1~2章)从不同的角度阐述了面向对象软件设计思想的核心概念、技术和原则,分析了面向对象的特性、设计模式的理念,指出了如何设计低耦合、高可扩展性的软件,等等;第二部分(3~6章)详细讲解了PHP中正则表达式的规范和使用技巧,PHP网络编程的原理、方法、技巧和一些重要的操作,PDO、数据库应用优化,数据库设计和MySQL的高级应用,PHP扩展引擎的原理与实践;第三部分(第7章)拨云见日,围绕PHP扩展开发进行了细致而深入的探讨,解析了PHP的底层实现和Zend虚拟机API,并用PHP扩展开发的实例带领读者走进PHP的底层世界,旨在让读者对PHP性能优化、底层原理进行深入的理解。第四部分(8~11章)重点讨论了缓存的设计、Memcached的原理与实践、NoSQL数据库Redis源码分析与应用实践、高性能PHP网站的架构和设计等内容;第五部分(12~14章)详细讲解了PHP代码的调试和测试、Hash算法和数据库的实现,以及PHP的编码规范,旨在帮助读者提高开发效率,养成良好编程习惯。
【作者简介】
列旭松,资深PHP技术工程师,精通PHP及其相关技术,对PHP内核原理有较深入的理解,开发经验丰富。曾自主开发了关键字匹配服务器和消息队列SquirrelMQ。平时喜欢开发一些实用的PHP扩展,如PHP字典扩展(红黑树算法)和PHP索引扩展(B+树算法)。精通C语言,同时对Web服务器的架构和优化、高并发服务端编程、Redis和Memcached等技术有深入的研究和认识。活跃于PHPChina和ChinaUnix等专业社区,担任PHPChina论坛内核版块版主。
陈文,资深PHP技术工程师,精通PHP及其相关技术,尤其擅长于PHP框架开发和应用架构。他还是一位资深的Java开发工程师,具有Fortran、Scala和C++语言的开发和使用背景,在传统软件和互联网开发领域都有丰富的实战经验。此外,他还擅长TCP/IP编程、多线程与并发程序设计、网络协议分析、数据库性能优化以及各种缓存技术,熟悉MySQL和Oracle等关系数据库产品。现从事网络安全软件开发,以及移动SI业务开发。对语言特性和软件设计思想有独到的见解,追求代码之美和高效率程序开发,爱好钻研底层技术,崇尚和提倡“以理论指导实践”。尤其爱好数学,认为数学是培养和锻炼思维和逻辑能力的重要工具,对算法有一定研究。长期活跃在PHPChina、ITeye和看雪论坛等社区,在PHPChina社区担任版主。

书籍规格:

书籍详细信息
书名PHP核心技术与最佳实践站内查询相似图书
9787111401926
如需购买下载《PHP核心技术与最佳实践》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位机械工业出版社
版次1版印次1
定价(元)89.0语种简体中文
尺寸24 × 19装帧平装
页数 592 印数 4000

书籍信息归属:

PHP核心技术与最佳实践是机械工业出版社于2012.12出版的中图分类号为 TP312 的主题关于 PHP语言-程序设计 的书籍。