第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与autoload 11
1.10 =与==、===的区别 14
1.11 HereDoc与NowDoc 15
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与exit 22
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 traits 66
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 使用APC 101
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 关于memcached 119
4.8.2 memcached架构 121
4.8.3 memcached特性 121
4.8.4 memcached缓存策略 124
4.8.5 memcached安装与配置 125
4.8.6 使用memcached做分布式Session 128
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 字符流与Socket 150
5.1.9 连接SMTP服务器 153
5.2 cURL核心技术 166
5.2.1 什么是cURL 166
5.2.2 安装和启用cURL 166
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 Xdebug 200
6.5.1 安装Xdebug 201
6.5.2 应用Xdebug 206
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 自定义Session 231
7.3.2 构造安全的Cookie 237
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