序
前言
第1章 PHP解惑1
1.1 省略结束标签的便利性2
1.2 emtpy、isset、is_null的区别2
1.3 布尔值的正确打开方式3
1.4 变量作用域实践4
1.5 多维数组排序6
1.6 超级全局数组7
1.7 global关键字与global数组的区别8
1.8 活用静态变量9
1.9 require、require_once、include、include_once与autoload11
1.10 =与==、===的区别14
1.11 HereDoc与NowDoc15
1.12 函数传值与引用16
1.12.1 传值17
1.12.2 引用17
1.13 避免使用过多参数19
1.13.1 使用数组19
1.13.2 使用对象19
1.14 匿名函数21
1.15 return与exit22
1.16 is_callable()与method_exists()函数22
1.17 执行外部程序25
1.18 安全模式的使用说明26
1.19 提前计算循环长度27
1.20 SQL组合优化30
1.21 文件处理31
1.22 goto语句:最后的手段35
1.23 利用phar扩展来节省空间36
1.24 手册上的小瑕疵37
1.25 本章小结38
第2章 深入PHP面向对象39
2.1 PHP与面向对象40
2.2 面向对象的一些概念40
2.3 类和对象41
2.4 使用对象43
2.5 构造方法与析构方法43
2.6 实例与多态45
2.7 类的扩展47
2.8 防止重写48
2.9 防止被扩展49
2.10 多态性50
2.11 接口50
2.12 抽象类54
2.13 静态方法和属性55
2.14 魔术方法57
2.15 命名空间63
2.16 traits66
2.17 本章小结68
第3章 PHP输出缓冲区69
3.1 系统缓冲区69
3.2 什么是PHP输出缓冲区70
3.2.1 默认PHP输出缓冲区72
3.2.2 消息头和消息体73
3.2.3 用户输出缓冲区73
3.3 输出缓冲区的机制75
3.4 输出缓冲区的陷阱77
3.5 输出缓冲区实践78
3.6 输出缓冲与静态页面81
3.7 内容压缩输出83
3.8 本章小结84
第4章 PHP缓存技术85
4.1 关于缓存85
4.2 文件缓存与静态页面87
4.3 页面静态化89
4.4 数据级别缓存91
4.5 OpCode缓存94
4.6 OpCode缓存管理工具100
4.6.1 使用APC101
4.6.2 eAccelerator的安装配置106
4.6.3 XCache的安装配置109
4.6.4 使用XCache缓存110
4.6.5 APC、eAccelerator和XCache三者的比较115
4.6.6 用户级别缓存117
4.7 使用deflate压缩页面118
4.8 内存数据库119
4.8.1 关于memcached119
4.8.2 memcached架构121
4.8.3 memcached特性121
4.8.4 memcached缓存策略124
4.8.5 memcached 安装与配置125
4.8.6 使用memcached做分布式Session128
4.8.7 两个memcached扩展130
4.8.8 安装pecl::memcache扩展130
4.8.9 memcached 数据存取方法131
4.9 缓存的陷阱132
4.10 本章小结133
第5章 PHP网络编程134
5.1 Socket编程134
5.1.1 Socket原理134
5.1.2 Socket函数136
5.1.3 PECL Socket函数库137
5.1.4 PHP的Socket源码解析141
5.1.5 创建TCP Socket客户端143
5.1.6 创建TCP Socket服务器145
5.1.7 创建UDP服务器147
5.1.8 字符流与Socket150
5.1.9 连接SMTP服务器153
5.2 cURL核心技术166
5.2.1 什么是cURL166
5.2.2 安装和启用cURL166
5.2.3 建立cURL的步骤168
5.2.4 PHP cURL选项169
5.2.5 cURL实践173
5.3 本章小结187
第6章 PHP调优、测试与工具188
6.1 PHP调试189
6.2 语法检查189
6.3 输出调试信息190
6.3.1 使用内部函数调试191
6.3.2 建立堆栈跟踪195
6.4 活用日志198
6.5 Xdebug200
6.5.1 安装Xdebug201
6.5.2 应用Xdebug206
6.5.3 Xdebug带来的增益207
6.6 本章小结209
第7章 用户验证策略210
7.1 数据库设计210
7.2 HTTP验证213
7.2.1 用户名主机名验证214
7.2.2 HTTP的身份验证机制215
7.2.3 HTTP基本验证216
7.2.4 摘要访问验证 220
7.3 纯PHP验证231
7.3.1 自定义Session231
7.3.2 构造安全的Cookie237
7.4 访问控制列表239
7.5 本章小结241
第8章 深度理解MySQL驱动与存储引擎242
8.1 MySQL连接驱动库242
8.2 mysqlnd驱动243
8.3 存储引擎247
8.3.1 取得存储引擎信息248
8.3.2 定义存储引擎248
8.3.3 内置的存储引擎250
8.4 第三方存储引擎257
8.5 结合硬件的引擎258
8.6 MySQL替代品与分支259
8.7 本章小结262
第9章 PHP命令行界面264
9.1 CLI简述264
9.1.1 CLI的测试安装264
9.1.2 CLI的配置参数265
9.2 CLI命令行接口266
9.3 CLI命令选项266
9.4 CLI开发实践269
9.5 CLI实际应用279
9.6 内置服务器283
9.7 本章小结285
第10章 代码重构实践286
10.1 什么是不良代码286
10.2 什么是好代码287
10.3 如何增加代码可读性289
10.3.1 命名方式290
10.3.2 表达式292
10.3.3 代码段292
10.4 可扩展性与效率重构293
10.5 模块化设计294
10.6 封装与解耦294
10.7 代码效率295
10.7.1 网络带宽的效率296
10.7.2 内存效率低296
10.7.3 程序处理效率低下297
10.8 本章小结298