《PHP核心技术与最佳实践》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:列旭松,陈文著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2012
  • ISBN:9787111401926
  • 页数:522 页
图书介绍:本书是一本致力于为希望成为中高级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跨域与P3 P协议 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