序 1
前言 3
第1章 类型检查 11
1.1为什么使用类型检查器 11
1.2设置类型检查器 12
1.3类型标注语法 14
1.4 Hack的类型系统 16
1.5规则 28
1.6类型推理 35
1.7类型提炼 39
1.8运行环境中的类型标注的执行 45
第2章 泛型 47
2.1入门实例 47
2.2其他泛型实体 49
2.3类型消除 51
2.4约束 53
2.5重温未决的类型 55
2.6泛型和亚型 56
2.7进阶:协变和逆变 59
第3章 Hack的其他特性 64
3.1枚举 64
3.2类型别名 67
3.3数组形状 71
3.4拉姆达表达式 73
3.5构造函数参数升级 75
3.6属性 76
3.7加强的自动加载 80
3.8整数算术溢出 83
3.9 nullsafe方法调用操作 83
3.10 trait和接口的必要条件 84
3.11隐藏类型检查器错误 86
第4章 在Hack中不支持的PHP特性 88
4.1引用 88
4.2 旧式风格构造器 90
4.3不区分大小写的名称查找 91
4.4可变变量 91
4.5动态属性 92
4.6混合方法调用语法 92
4.7 isset、 empty和unset 93
4.8其他 94
第5章 集合 96
5.1为什么使用集合 98
5.2集合拥有引用语义 99
5.3使用集合 101
5.4集合类型标注 107
5.5与数组互操作 116
第6章 异步 121
6.1入门实例 121
6.2异步细节 124
6.3构建异步代码 134
6.4其他类型的等待 141
6.5常见错误 144
6.6异步扩展 148
第7章 XHP 157
7.1为什么使用XHP 157
7.2如何使用XHP 161
7.3创建你自己的XHP类 168
7.4 XHP最佳实践 178
7.5迁移到XHP 182
7.6 XHP内部原理 185
第8章 配置和部署HHVM 188
8.1指定配置选项 188
8.2服务器模式 190
8.3 JIT热身 192
8.4 repo-authoritative模式 193
8.5管理服务器 195
第9章 hphpd:交互式调试器 197
9.1开始入门 197
9.2代码执行 200
9.3执行环境 201
9.4使用断点 205
9.5查看代码和文档 216
9.6宏 219
9.7配置hphpd 220
第10章 Hack工具 223
10.1检查代码库 223
10.2迁移PHP代码到Hack 227
10.3编译Hack代码到PHP代码 232