细说PHP 第4版
作者:高洛峰 编著
出版时间:2019年版
内容简介
本书是畅销书升级版,全书共分为28章,每章都是PHP独立知识点的总结,全部以现在*新的PHP7以上版本应用语法为主。内容涵盖了动态网站开发所需要的后端全栈技术、PHP的常用功能模块和实用技巧、MySQL和Redis两种数据库的设计与应用、PHP面向对象的程序设计思想、数据库抽象层PDO、Web开发的设计模式、自定义接口技术、全球应用排行**的Laravel5.5框架技术,并专门组建专业的开发团队为本书重新开发商业项目EUDPlayer作为案例等。每章都有大量的实用示例及详尽的注释,以加速读者的理解和学习,并为本书单独开发一个微信小程序(图书兄弟),提供和章节配套的精制视频教程、案例和课件下载、扩展文章、章节测试等多方位内容。对于PHP应用开发的新手而言,本书不失为一本好的入门教材,内容既实用又全面,所有实例都可以在开发中直接应用,并辅以配套的视频教程,使读者轻松掌握所学知识。另外,本书也适合有一定基础的网络开发人员和网络爱好者,以及大中专院校的师生阅读与参考。不仅可以作为PHP开发的学习用书,还可以作为从事Web开发的程序员的参考用书和必备手册。对于行家来说,本书也是一本难得的参考手册,读者必将从中获益。
目录
目录
第1章 LAMP网站构建\t1
1.1 Web概述\t1
1.1.1 Web应用的优势\t2
1.1.2 Web 2.0时代的互联网\t3
1.1.3 Web开发太阳城
\t4
1.1.4 认识脚本语言\t5
1.2 动态网站开发所需的Web构件\t5
1.2.1 客户端浏览器\t6
1.2.2 超文本标记语言(HTML)\t7
1.2.3 层叠样式表(CSS)\t8
1.2.4 客户端脚本编程语言JavaScript\t8
1.2.5 Web服务器\t9
1.2.6 服务器端编程语言\t10
1.2.7 数据库管理系统\t10
1.3 几种主流的Web应用程序平台\t11
1.3.1 Web应用程序开发平台对比分析\t11
1.3.2 动态网站开发平台技术比较\t12
1.4 HTTP协议与Web的关系\t13
1.4.1 HTTP协议概述\t13
1.4.2 HTTP协议结构\t14
1.4.3 HTTP请求消息\t15
1.4.4 HTTP响应消息\t15
1.4.5 HTTPS是什么\t16
1.4.6 URL概述\t16
1.5 Web的工作原理\t17
1.5.1 情景1:不带应用程序服务器和数据库的服务器\t17
1.5.2 情景2:带应用程序服务器的Web服务器\t18
1.5.3 情景3:浏览器访问服务器端的数据库\t19
1.6 LAMP网站开发组合概述\t19
1.6.1 Linux操作系统\t20
1.6.2 Web服务器Apache\t20
1.6.3 MySQL数据库管理系统\t20
1.6.4 PHP后台脚本编程语言\t21
1.6.5 LAMP的发展趋势\t21
1.6.6 Web的未来发展\t21
1.7 小结\t22
第2章 PHP的应用与发展\t23
2.1 PHP是什么\t23
2.1.1 从认识PHP开始\t23
2.1.2 PHP都能做什么\t24
2.2 PHP的应用\t26
2.2.1 开发网站和移动网站的应用\t26
2.2.2 在企业内部信息化系统中的应用\t27
2.2.3 在App接口开发方面的应用\t27
2.2.4 对微信公众平台二次开发的应用\t28
2.2.5 微信小程序开发应用\t29
2.2.6 PHP在其他方面的应用\t29
2.3 PHP的开发优势\t29
2.3.1 简单易学\t30
2.3.2 开发效率高\t30
2.3.3 开发成本低\t30
2.3.4 程序执行效率高\t30
2.3.5 安全性良好\t31
2.3.6 功能强大\t31
2.3.7 可选择性多\t31
2.4 PHP的发展\t31
2.4.1 PHP的诞生\t31
2.4.2 PHP的迭代过程\t32
2.4.3 PHP的现在\t33
2.4.4 PHP的未来\t33
2.5 如何学习PHP\t34
2.5.1 确定学习的目标\t34
2.5.2 PHP学习线路图\t34
2.5.3 坚持动手实验\t36
2.5.4 Bug解决之道\t36
2.5.5 看教学视频,让学习变得简单\t37
2.5.6 优秀的Web程序员是怎样练成的\t37
2.6 小结\t39
第3章 从搭建你的PHP开发环境开始\t40
3.1 几种常见的PHP环境安装方式\t40
3.1.1 在Linux系统上以源代码包的方式安装环境\t40
3.1.2 在Windows系统上安装Web工作环境\t41
3.1.3 搭建学习型的PHP工作环境\t41
3.2 环境安装对操作系统的选择\t41
3.2.1 选择网站运营的操作系统\t41
3.2.2 选择网站开发的操作系统\t42
3.3 安装集成PHP开发环境\t42
3.3.1 安装前准备\t42
3.3.2 安装步骤\t42
3.3.3 环境测试\t43
3.4 集成环境中各服务器的配置\t45
3.4.1 Apache配置\t46
3.4.2 改变文档根目录www的位置\t46
3.4.3 修改PHP的默认配置\t47
3.4.4 phpMyAdmin的应用\t47
3.4.5 修改MySQL默认的访问权限\t48
3.5 小结\t49
第4章 PHP的基本语法\t50
4.1 第一个PHP脚本程序\t50
4.2 PHP语言标记\t52
4.2.1 将PHP代码嵌入HTML中的位置\t53
4.2.2 解读开始和结束标记\t53
4.3 指令分隔符“分号”\t54
4.4 程序注释\t54
4.5 在程序中使用空白的处理\t56
4.6 变量\t57
4.6.1 变量的声明\t57
4.6.2 变量的命名\t58
4.6.3 可变变量\t59
4.6.4 变量的引用赋值\t59
4.7 变量的类型\t60
4.7.1 类型介绍\t60
4.7.2 布尔型(boolean)\t61
4.7.3 整型(integer)\t62
4.7.4 浮点型(float或double)\t63
4.7.5 字符串(string)\t63
4.7.6 数组(array)\t65
4.7.7 对象(object)\t66
4.7.8 资源类型(resource)\t66
4.7.9 NULL类型\t67
4.7.10 伪类型介绍\t67
4.8 数据类型之间相互转换\t67
4.8.1 自动类型转换\t68
4.8.2 强制类型转换\t68
4.8.3 类型转换细节\t69
4.8.4 变量类型的测试函数\t69
4.9 常量\t70
4.9.1 常量的定义和使用\t70
4.9.2 常量和变量\t71
4.9.3 PHP新版本可以使用表达式定义常量\t72
4.9.4 define()和const的区别\t72
4.9.5 系统中的预定义常量\t72
4.9.6 PHP中的魔术常量\t73
4.10 PHP中的运算符\t74
4.10.1 算术运算符\t74
4.10.2 字符串运算符\t76
4.10.3 赋值运算符\t76
4.10.4 比较运算符\t77
4.10.5 逻辑运算符\t79
4.10.6 位运算符\t80
4.10.7 其他运算符\t82
4.10.8 运算符的优先级\t83
4.11 表达式\t84
4.12 容易混淆的特殊值\t84
4.13 小结\t85
第5章 PHP的流程控制结构\t86
5.1 分支结构\t86
5.1.1 单一条件分支结构(if)\t86
5.1.2 双向条件分支结构(else子句)\t87
5.1.3 多向条件分支结构(elseif子句)\t88
5.1.4 多向条件分支结构(switch语句)\t89
5.1.5 巢状条件分支结构\t91
5.1.6 条件分支结构实例应用(简单计算器)\t92
5.2 循环结构\t93
5.2.1 while语句\t94
5.2.2 do…while循环\t95
5.2.3 for语句\t96
5.3 特殊的流程控制语句\t99
5.3.1 break语句\t99
5.3.2 continue语句\t99
5.3.3 exit语句\t100
5.4 PHP的新版特性――goto语句\t100
5.5 小结\t102
第6章 PHP的函数应用\t103
6.1 函数的定义\t103
6.2 自定义函数\t104
6.2.1 函数的声明\t104
6.2.2 函数的调用\t105
6.2.3 函数的参数\t106
6.2.4 函数的返回值\t107
6.2.5 标量类型声明\t109
6.3 函数的工作原理和结构化编程\t111
6.4 PHP变量的范围\t111
6.4.1 局部变量\t111
6.4.2 全局变量\t112
6.4.3 静态变量\t113
6.5 声明及应用各种形式的PHP函数\t114
6.5.1 常规参数的函数\t115
6.5.2 伪类型参数的函数\t115
6.5.3 引用参数的函数\t115
6.5.4 默认参数的函数\t116
6.5.5 可变个数参数的函数\t118
6.5.6 回调函数\t119
6.6 递归函数\t122
6.7 使用自定义函数库\t123
6.8 PHP匿名函数和闭包\t124
6.9 小结\t125
第7章 PHP中的数组与数据结构\t126
7.1 数组的分类\t126
7.2 数组的定义\t127
7.2.1 以直接赋值的方式声明数组\t128
7.2.2 使用array()语言结构新建数组\t129
7.2.3 数组简写语法\t130
7.2.4 多维数组的声明\t130
7.3 数组的遍历\t132
7.3.1 使用for语句循环遍历数组\t132
7.3.2 联合使用list( )、each( )和while循环遍历数组\t134
7.3.3 使用foreach语句遍历数组\t135
7.3.4 使用数组的内部指针控制函数遍历数组\t138
7.4 预定义数组\t139
7.4.1 服务器变量:$_SERVER\t140
7.4.2 环境变量:$_ENV\t140
7.4.3 URL GET变量:$_GET\t141
7.4.4 HTTP POST变量:$_POST\t141
7.4.5 request变量:$_REQUEST\t142
7.4.6 HTTP文件上传变量:$_FILES\t142
7.4.7 HTTP Cookies:$_COOKIE\t142
7.4.8 Session变量:$_SESSION\t143
7.4.9 Global变量:$GLOBALS\t143
7.5 数组的相关处理函数\t143
7.5.1 数组的键/值操作函数\t143
7.5.2 统计数组元素的个数和唯一性\t146
7.5.3 使用回调函数处理数组的函数\t147
7.5.4 数组的排序函数\t150
7.5.5 拆分、合并、分解和接合数组\t153
7.5.6 数组与数据结构\t155
7.5.7 其他有用的数组处理函数\t157
7.6 操作PHP数组需要注意的一些细节\t158
7.6.1 数组运算符号\t158
7.6.2 删除数组中的元素\t159
7.6.3 关于数组下标的注意事项\t159
7.7 小结\t160
第8章 PHP面向对象的程序设计\t161
8.1 面向对象概述\t161
8.1.1 类和对象之间的关系\t161
8.1.2 面向对象的程序设计\t162
8.2 如何抽象一个类\t163
8.2.1 类的声明\t163
8.2.2 成员属性\t164
8.2.3 成员方法\t164
8.3 通过类实例化对象\t166
8.3.1 实例化对象\t166
8.3.2 对象类型在内存中的分配\t167
8.3.3 对象中成员的访问\t168
8.3.4 特殊的对象引用“$this”\t169
8.3.5 构造方法与析构方法\t171
8.4 封装性\t173
8.4.1 设置私有成员\t174
8.4.2 私有成员的访问\t175
8.4.3 _ _set()、_ _get()、_ _isset()和_ _unset() 4个方法\t176
8.5 继承性\t180
8.5.1 类继承的应用\t181
8.5.2 访问类型控制\t182
8.5.3 子类中重载父类的方法\t184
8.6 常见的关键字和魔术方法\t186
8.6.1 final关键字的应用\t186
8.6.2 static关键字的使用\t187
8.6.3 单态设计模式\t188
8.6.4 const关键字\t189
8.6.5 instanceof关键字\t189
8.6.6 克隆对象\t190
8.6.7 类中通用的方法_ _toString()\t191
8.6.8 PHP 7新加入的方法_ _ debugInfo()\t191
8.6.9 _ _call()方法的应用\t192
8.6.10 自动加载类\t194
8.6.11 对象串行化\t194
8.7 抽象类与接口\t197
8.7.1 抽象类\t197
8.7.2 接口技术\t198
8.8 多态性的应用\t200
8.9 PHP 5.4的Trait特性\t201
8.9.1 Trait的声明\t201
8.9.2 Trait的基本使用\t202
8.10 PHP 7的匿名类\t204
8.10.1 匿名类的声明\t204
8.10.2 匿名类的应用\t205
8.11 PHP 5.3新增加的命名空间\t206
8.11.1 命名空间的基本应用\t206
8.11.2 命名空间的子空间和公共空间\t208
8.11.3 命名空间中的名称和术语\t209
8.11.4 别名和导入\t209
8.12 面向对象版图形计算器\t211
8.12.1 需求分析\t211
8.12.2 功能设计及实现\t212
8.12.3 类的组织架构\t216
8.13 小结\t217
第9章 字符串处理\t219
9.1 字符串的处理介绍\t219
9.1.1 字符串的处理方式\t219
9.1.2 字符串类型的特点\t219
9.1.3 双引号中的变量解析总结\t220
9.2 常用的字符串输出函数\t221
9.3 常用的字符串格式化函数\t223
9.3.1 去除空格和字符串填补函数\t224
9.3.2 字符串大小写的转换\t225
9.3.3 和HTML标签相关的字符串格式化\t225
9.3.4 其他字符串格式化函数\t228
9.4 字符串比较函数\t229
9.4.1 按字节顺序进行字符串比较\t230
9.4.2 按自然排序进行字符串比较\t230
9.5 小结\t231
第10章 正则表达式\t232
10.1 正则表达式简介\t232
10.2 正则表达式的语法规则\t233
10.2.1 定界符\t233
10.2.2 原子\t234
10.2.3 元字符\t235
10.2.4 模式修正符\t238
10.3 与Perl兼容的正则表达式函数\t238
10.3.1 字符串的匹配与查找\t239
10.3.2 字符串的替换\t242
10.3.3 字符串的分割和连接\t246
10.4 文章发布操作示例\t248
10.5 小结\t252
第11章 PHP的错误和异常处理\t253
11.1 错误处理\t253
11.1.1 错误报告级别\t253
11.1.2 调整错误报告级别\t254
11.1.3 使用trigger_error()函数代替die()函数\t256
11.1.4 自定义错误处理\t256
11.1.5 写错误日志\t257
11.2 异常处理\t259
11.2.1 异常处理实现\t260
11.2.2 扩展PHP内置的异常处理类\t260
11.2.3 捕获多个异常\t262
11.2.4 PHP异常处理新特性\t263
11.3 小结\t264
第12章 PHP的日期和时间\t265
12.1 UNIX时间戳\t265
12.1.1 将日期和时间转变成UNIX时间戳\t265
12.1.2 日期的计算\t266
12.2 在PHP中获取日期和时间\t267
12.2.1 调用getdate()函数取得日期和时间信息\t267
12.2.2 日期和时间格式化输出\t267
12.3 修改PHP的默认时区\t269
12.4 使用微秒计算PHP脚本执行时间\t269
12.5 日历类\t270
12.6 小结\t273
第13章 文件系统处理\t275
13.1 文件系统概述\t275
13.1.1 文件类型\t275
13.1.2 文件的属性\t276
13.2 目录的基本操作\t278
13.2.1 解析目录路径\t279
13.2.2 遍历目录\t280
13.2.3 统计目录大小\t281
13.2.4 建立和删除目录\t282
13.2.5 复制目录\t282
13.3 文件的基本操作\t283
13.3.1 文件的打开与关闭\t283
13.3.2 写入文件\t285
13.3.3 读取文件内容\t285
13.3.4 访问远程文件\t287
13.3.5 移动文件指针\t288
13.3.6 文件的锁定机制\t289
13.3.7 文件的一些基本操作函数\t291
13.4 文件的上传与下载\t292
13.4.1 文件上传\t292
13.4.2 处理多个文件上传\t295
13.4.3 文件下载\t296
13.5 设计经典的文件上传类\t297
13.5.1 需求分析\t297
13.5.2 程序设计\t297
13.5.3 文件上传类代码实现\t298
13.5.4 文件上传类的应用过程\t301
13.6 小结\t303
第14章 PHP动态图像处理\t304
14.1 PHP中GD库的使用\t304
14.1.1 画布管理\t305
14.1.2 设置颜色\t306
14.1.3 生成图像\t306
14.1.4 绘制图像\t307
14.1.5 在图像中绘制文字\t309
14.2 设计经典的验证码类\t311
14.2.1 设计验证码类\t311
14.2.2 应用验证码类的实例对象\t313
14.2.3 表单中应用验证码\t313
14.2.4 实例演示\t314
14.3 PHP图片处理\t314
14.3.1 图片背景管理\t314
14.3.2 图片缩放\t316
14.3.3 图片裁剪\t317
14.3.4 添加图片水印\t318
14.3.5 图片旋转和翻转\t319
14.4 设计经典的图像处理类\t321
14.4.1 需求分析\t322
14.4.2 程序设计\t322
14.4.3 图像处理类代码实现\t323
14.4.4 图像处理类的应用过程\t327
14.5 小结\t328
第15章 MySQL数据库概述\t329
15.1 数据库的应用\t329
15.1.1 数据库在Web开发中的重要地位\t329
15.1.2 为什么PHP会选择MySQL作为自己的黄金搭档\t330
15.1.3 PHP和MySQL的合作方式\t330
15.1.4 结构化查询语言SQL\t331
15.2 MySQL数据库的常见操作\t331
15.2.1 MySQL数据库的连接与关闭\t331
15.2.2 创建新用户并授权\t332
15.2.3 创建数据库\t333
15.2.4 创建数据表\t333
15.2.5 数据表内容的简单管理\t334
15.3 小结\t335
第16章 MySQL数据表的设计\t336
16.1 数据表(Table)\t336
16.2 数据值和列类型\t337
16.2.1 数值类的数据列类型\t337
16.2.2 字符串类的数据列类型\t338
16.2.3 日期和时间类的数据列类型\t339
16.2.4 NULL值\t339
16.2.5 类型转换\t339
16.3 数据字段属性\t340
16.4 数据表对象管理\t340
16.4.1 创建表(CREATE TABLE)\t340
16.4.2 修改表(ALTER TABLE)\t342
16.4.3 删除表(DROP TABLE)\t342
16.5 数据表的类型及存储位置\t343
16.5.1 MyISAM数据表\t343
16.5.2 InnoDB数据表\t343
16.5.3 选择InnoDB还是MyISAM数据表类型\t343
16.5.4 数据表的存储位置\t344
16.6 数据表的默认字符集\t344
16.6.1 字符集\t344
16.6.2 字符集支持原理\t345
16.6.3 创建数据对象时修改字符集\t345
16.7 创建索引\t346
16.7.1 主键索引(PRIMARY KEY)\t346
16.7.2 唯一索引(UNIQUE)\t347
16.7.3 常规索引(INDEX)\t347
16.7.4 全文索引(FULLTEXT)\t348
16.8 数据库的设计技巧\t348
16.8.1 数据库的设计要求\t348
16.8.2 命名的技巧\t348
16.8.3 数据库具体设计工作中的技巧\t349
16.9 小结\t349
第17章 SQL语句设计\t350
17.1 操作数据表中的数据记录(DML)\t350
17.1.1 使用INSERT语句向数据表中添加数据\t350
17.1.2 使用UPDATE语句更新数据表中已存在的数据\t351
17.1.3 使用DELETE语句删除数据表中不需要的数据记录\t352
17.2 通过DQL命令查询数据表中的数据\t352
17.2.1 选择特定的字段\t353
17.2.2 使用AS子句为字段取别名\t353
17.2.3 DISTINCT关键字的使用\t353
17.2.4 在SELECT语句中使用表达式的列\t354
17.2.5 使用WHERE子句按条件检索\t355
17.2.6 根据空值(NULL)确定检索条件\t356
17.2.7 使用BETWEEN AND进行范围比较查询\t356
17.2.8 使用IN进行范围比较查询\t356
17.2.9 使用LIKE进行模糊查询\t356
17.2.10 多表查询(连接查询)\t357
17.2.11 嵌套查询(子查询)\t359
17.2.12 使用ORDER BY对查询结果排序\t359
17.2.13 使用LIMIT限定结果行数\t360
17.2.14 使用统计函数\t360
17.2.15 使用GROUP BY对查询结果分组\t361
17.3 查询优化\t362
17.4 小结\t363
第18章 数据库抽象层PDO\t364
18.1 PHP访问MySQL数据库服务器的流程\t364
18.2 PDO所支持的数据库\t365
18.3 PDO的安装\t366
18.4 创建PDO对象\t367
18.4.1 以多种方式调用构造方法\t368
18.4.2 PDO对象中的成员方法\t370
18.5 使用PDO对象\t370
18.5.1 调整PDO的行为属性\t370
18.5.2 PDO处理PHP程序和数据库之间的数据类型转换\t371
18.5.3 PDO的错误处理模式\t371
18.5.4 使用PDO执行SQL语句\t372
18.6 PDO对预处理语句的支持\t373
18.6.1 了解PDOStatement对象\t374
18.6.2 准备语句\t375
18.6.3 绑定参数\t375
18.6.4 执行准备好的查询\t376
18.6.5 获取数据\t377
18.6.6 大数据对象的存取\t380
18.7 PDO的事务处理\t381
18.7.1 MySQL的事务处理\t381
18.7.2 构建事务处理的应用程序\t382
18.8 设计完美分页类\t383
18.8.1 需求分析\t383
18.8.2 程序设计\t383
18.8.3 完美分页类的代码实现\t385
18.8.4 完美分页类的应用过程\t388
18.9 管理表books实例\t390
18.9.1 需求分析\t390
18.9.2 程序设计\t391
18.10 小结\t397
本章必须掌握的知识点\t397
本章需要了解的内容\t398
本章需要拓展的内容\t398
第19章 MemCache管理与应用\t399
19.1 MemCache概述\t399
19.1.1 初识MemCache\t399
19.1.2 MemCache在Web中的应用\t400
19.2 memcached的安装及管理\t401
19.2.1 Linux下安装MemCache软件\t401
19.2.2 Windows下安装MemCache软件\t402
19.2.3 memcached服务器的管理\t403
19.3 使用Telnet作为memcached的客户端管理\t403
19.3.1 连接memcached服务器\t403
19.3.2 基本的memcached客户端命令\t403
19.3.3 查看当前memcached服务器的运行状态信息\t404
19.3.4 数据管理指令\t404
19.4 PHP的memcached管理接口\t405
19.4.1 安装PHP中的MemCache应用程序扩展接口\t405
19.4.2 MemCache应用程序扩展接口\t407
19.4.3 MemCache的实例应用\t411
19.5 memcached服务器的安全防护\t412
19.6 小结\t412
第20章 会话控制\t414
20.1 为什么要使用会话控制\t414
20.2 会话跟踪的方式\t415
20.3 Cookie的应用\t415
20.3.1 Cookie概述\t415
20.3.2 向客户端计算机中设置Cookie\t416
20.3.3 在PHP脚本中读取Cookie的资料内容\t417
20.3.4 数组形态的Cookie应用\t418
20.3.5 删除Cookie\t418
20.3.6 基于Cookie的用户登录模块\t419
20.4 Session的应用\t420
20.4.1 Session概述\t420
20.4.2 配置Session\t421
20.4.3 Session的声明与使用\t422
20.4.4 注册一个会话变量和读取Session\t422
20.4.5 注销变量与销毁Session\t423
20.4.6 Session的自动回收机制\t424
20.4.7 传递Session ID\t425
20.5 一个简单的邮件系统实例\t427
20.5.1 为邮件系统准备数据\t427
20.5.2 编码实现邮件系统\t428
20.5.3 邮件系统执行说明\t430
20.6 自定义Session处理方式\t431
20.6.1 自定义Session的存储机制\t431
20.6.2 使用数据库处理Session信息\t433
20.6.3 使用memcached处理Session信息\t436
20.7 小结\t438
第21章 Redis的管理与应用\t439
21.1 从认识Redis开始\t439
21.1.1 Redis与其他数据库和软件的对比\t439
21.1.2 Redis的特点\t440
21.1.3 使用Redis的理由\t440
21.2 Redis环境安装及管理\t441
21.2.1 安装Redis\t441
21.2.2 启动Redis服务\t442
21.2.3 Redis服务的性能测试\t442
21.2.4 Redis服务的配置管理\t443
21.3 Redis客户端管理\t444
21.3.1 命令行客户端操作\t445
21.3.2 安装PHP的Redis扩展\t445
21.4 Redis服务器的基本操作\t446
21.5 Redis的数据类型\t447
21.6 PHP操作Redis的通用方法\t448
21.7 Redis的字符串(String)类型\t449
21.7.1 相关的命令操作\t449
21.7.2 应用场景\t450
21.7.3 使用Redis实现页面缓存\t450
21.8 Redis的列表(List)类型\t451
21.8.1 相关的命令操作\t452
21.8.2 应用场景\t453
21.8.3 “PHP+Redis”实现消息队列\t453
21.9 Redis的集合(Set)类型\t454
21.9.1 相关的命令操作\t454
21.9.2 应用场景\t456
21.9.3 “PHP+Redis”实现共同好友功能\t456
21.10 Redis的Sorted Set有序集合类型\t458
21.10.1 相关的命令操作\t458
21.10.2 应用场景\t459
21.10.3 “PHP+Redis”实现排行榜功能\t460
21.11 Redis的哈希(hash)表类型\t461
21.11.1 相关的命令操作\t461
21.11.2 应用场景\t463
21.11.3 使用Redis实现购物车功能\t463
21.12 Redis订阅发布系统\t465
21.12.1 Redis 发布订阅\t465
21.12.2 Redis 发布订阅操作\t465
21.13 Redis的事务处理机制\t466
21.14 小结\t467
第22章 PHP的CURL功能扩展模块\t468
22.1 CURL功能扩展模块介绍\t468
22.2 PHP的CURL功能扩展模块基本用法\t469
22.3 CURL相关的功能选项\t470
22.4 通过CURL扩展获取页面信息\t471
22.5 通过CURL扩展用POST方法发送数据\t473
22.6 通过CURL扩展上传文件\t474
22.7 通过CURL模拟登录并获取数据\t476
22.8 小结\t477
第23章 自定义PHP接口规范\t478
23.1 应用程序编程接口(API)\t478
23.1.1 什么是接口\t478
23.1.2 了解实现接口的几种方法\t479
23.1.3 接口的应用和优势\t480
23.2 接口实现的基础\t482
23.2.1 实现接口的访问流程\t482
23.2.2 处理接口的返回值\t483
23.2.3 在程序中访问接口\t484
23.3 接口的安全控制规范\t486
23.3.1 API安全控制原则\t487
23.3.2 API安全控制简单实现步骤\t487
23.4 API的设计原则和规范\t491
23.4.1 什么是RESTful风格的API\t491
23.4.2 RESTful API应遵循的原则\t491
23.5 创建RESTful规范 WebAPI框架\t495
23.5.1 程序结构设计\t495
23.5.2 架构详解\t496
23.5.3 WebAPI框架应用\t502
23.5.4 客户端访问API\t507
23.6 使用第三方接口服务实例\t509
23.6.1 查找API\t509
23.6.2 查看API文档说明\t509
23.6.3 获取接口的key\t510
23.6.4 使用 PHP 代码请求接口\t510
23.7 小结\t511
第24章 PHP依赖管理工具Composer\t513
24.1 认识Composer\t513
24.1.1 什么是Composer\t513
24.1.2 Composer的代码库在哪里\t514
24.1.3 类库的规范\t515
24.2 Composer的安装\t515
24.2.1 安装前的准备\t515
24.2.2 安装步骤\t515
24.2.3 测试安装环境\t516
24.3 Composer常用文件\t517
24.3.1 vendor目录\t517
24.3.2 composer.json 文件\t517
24.3.3 composer.lock 文件\t518
24.4 Composer常用命令\t519
24.4.1 Composer基本命令的使用\t519
24.4.2 Composer命令的运行流程\t520
24.5 Composer应用案例\t521
24.5.1 搜索需要的库\t521
24.5.2 应用前准备\t522
24.5.3 应用类库\t523
24.6 小结\t525
第25章 MVC模式与PHP框架\t526
25.1 MVC模式在Web中的应用\t526
25.1.1 MVC模式的工作原理\t526
25.1.2 MVC模式的优缺点\t527
25.2 PHP开发框架\t528
25.2.1 什么是框架\t528
25.2.2 为什么要用框架\t529
25.2.3 框架和MVC模式的关系\t529
25.2.4 流行的PHP框架比较\t530
25.3 划分模块和操作\t532
25.3.1 为项目划分模块\t532
25.3.2 为模块设置操作\t532
25.4 小结\t533
第26章 简洁优雅的Laravel开发框架\t534
26.1 认识Laravel框架\t534
26.1.1 什么是Laravel框架\t534
26.1.2 Laravel框架的功能特点\t534
26.1.3 Laravel框架的技术特点\t535
26.1.4 Laravel框架应用的重要性\t536
26.1.5 Laravel框架的发展历程\t536
26.2 安装Laravel\t538
26.2.1 安装前准备\t538
26.2.2 安装Laravel 5.5\t539
26.2.3 Laravel框架的目录结构\t540
26.2.4 初始化Laravel框架安装的一些设置\t542
26.2.5 Laravel框架的Artisan工具\t544
26.3 Laravel框架的工作流程\t544
26.3.1 基本的工作流程\t545
26.3.2 客户端\t546
26.3.3 主入口文件\t546
26.3.4 URL路由\t546
26.3.5 控制器层(C)\t547
26.3.6 中间件\t548
26.3.7 数据库操作层(M)\t550
26.3.8 视图层(V)\t553
26.3.9 请求和响应\t556
26.4 Laravel框架的核心服务容器\t561
26.4.1 IoC 容器\t561
26.4.2 了解Laravel框架的核心\t562
26.4.3 注册自己的服务到容器中\t566
26.4.4 门面(Facades)\t567
26.4.5 使用Composer为Laravel框架安装扩展插件包\t569
26.5 基于Laravel框架的Web应用实例\t571
26.5.1 用户登录模块\t571
26.5.2 后台管理平台模块\t573
26.5.3 文章模块\t575
26.5.4 搭建前台模块\t584
26.5.5 评论模块\t586
26.6 基于Laravel 5.5的API应用实例\t590
26.6.1 构建接口模块\t590
26.6.2 封装返回的统一消息\t591
26.6.3 为API增加版本\t593
26.6.4 API token认证\t593
26.6.5 编写文档和测试\t596
26.7 小结\t596
第27章 项目开发实战――博客系统\t597
27.1 项目介绍\t597
27.2 需求分析\t597
27.2.1 系统目标\t598
27.2.2 系统功能结构\t598
27.2.3 权限介绍\t599
27.3 操作流程图\t599
27.3.1 博客前台操作流程\t599
27.3.2 博客后台操作流程\t600
27.4 原型图\t600
27.4.1 什么是原型图\t600
27.4.2 原型图的分类\t600
27.4.3 项目部分原型页面展示\t601
27.5 博客项目的模块介绍\t604
27.5.1 前台模块\t604
27.5.2 后台模块\t604
27.5.3 前后台模块思维导图\t605
27.6 数据库设计说明\t606
27.6.1 概念结构设计\t606
27.6.2 通过实体得到ER图\t606
27.6.3 逻辑结构设计\t607
27.6.4 数据库物理结构设计\t608
27.7 程序设计说明\t610
27.7.1 环境部署\t611
27.7.2 权限设置\t611
27.7.3 项目目录结构\t611
27.7.4 项目模块结构\t612
27.7.5 项目程序结构\t612
27.7.6 模型说明\t616
27.7.7 自定义类及安装的组件\t617
27.8 项目安装和部署\t617
27.8.1 搭建虚拟主机\t617
27.8.2 导入数据库\t618
27.8.3 项目应用\t618
27.9 本章作业\t619
27.9.1 任务一:修改网站配置模块\t619
27.9.2 任务二:添加友情链接模块\t622
27.10 小结\t624
第28章 在线教育系统EDUPlayer\t625
28.1 项目背景\t625
28.2 需求分析\t625
28.2.1 系统目标\t625
28.2.2 前后端分离架构\t626
28.2.3 系统功能结构\t626
28.2.4 权限介绍\t626
28.3 操作流程\t627
28.3.1 前台操作流程\t628
28.3.2 后台操作流程\t628
28.4 原型图\t629
28.5 系统模块介绍\t631
28.5.1 前台模块\t631
28.5.2 后台模块\t632
28.5.3 前台模块思维导图\t632
28.5.4 后台模块思维导图\t632
28.6 数据库设计说明\t633
28.6.1 概念结构设计\t634
28.6.2 通过实体获取ER图\t634
28.6.3 Laravel 框架的数据表迁移工具\t635
28.6.4 数据表详解\t635
28.7 项目安装\t656
28.7.1 环境依赖\t656
28.7.2 环境安装之 nginx\t657
28.7.3 环境安装之 PHP\t657
28.7.4 环境安装之MySQL\t658
28.7.5 环境安装之 Redis\t659
28.7.6 环境安装之Git\t659
28.7.7 环境安装之 Composer\t659
28.7.8 项目下载及配置\t660
28.7.9 虚拟主机配置\t661
28.7.10 开启定时任务\t662
28.7.11 Redis队列实现\t662
28.7.12 安装成功\t663
28.8 目录结构\t663
28.8.1 根目录\t663
28.8.2 app 目录\t664
28.9 依赖组件\t665
28.10 二次开发注意事项\t666
28.10.1 搜索参数和排序参数约束\t666
28.10.2 关联加载约束\t667
28.10.3 权限验证约束\t668
28.10.4 开发新业务示例\t668
28.11 小结\t669
附录\t671
附录A 编码规范\t672
附录B PHP项目的安全和优化\t683
附录C PHP 5.3~PHP 5.6中的新特性\t695