第1章 初识PHP框架技术 1
1.1 PHP语言发展历史及其适合的应用领域 1
1.2 什么是框架 3
1.3 为什么要用框架开发 4
1.4 自定义框架 4
1.4.1 MVC框架模式的实现 4
1.4.2 入口文件 11
1.4.3 应用(前端控制器) 15
1.4.4 从自定义框架到Yii2框架 20
1.5 小结 22
第2章 Yii2框架基础 23
2.1 Yii简介 23
2.1.1 什么是Yii框架技术 23
2.1.2 Yii2的优点 24
2.1.3 应用案例 25
2.2 下载Yii2 27
2.3 运行应用 30
2.4 输出“Hello World” 31
2.5 入口文件 33
2.6 应用主体 33
2.7 MVC框架模式 36
2.8 Yii2框架中的控制器 36
2.9 Yii2框架中的视图 37
2.10 项目实现迭代一:渲染首页、列表页和内容页视图 39
2.11 小结 41
第3章 布局 42
3.1 布局概述 42
3.2 项目实现迭代二:创建并使用布局渲染首页视图 43
3.3 Controller类的render()方法执行流程 45
3.4 应用级布局 47
3.5 嵌套布局 48
3.6 项目实现迭代三:使用嵌套布局渲染“新闻中心”列表页 49
3.7 视图文件的存储路径 53
3.8 小结 54
第4章 模块 55
4.1 模块概述 55
4.2 使用Gii创建模块 57
4.3 模块中的资源文件 59
4.4 项目实现迭代四:文章管理 62
4.5 小结 64
第5章 ActiveRecord模型 65
5.1 ActiveRecord模型概述 65
5.2 通过CRUD(增查改删)操作理解ActiveRecord类 66
5.2.1 文章表(ds article) 66
5.2.2 在配置文件中初始化数据库连接 67
5.2.3 创建ActiveRecord模型 68
5.2.4 通过查询操作理解ActiveRecord类 69
5.2.5 通过插入和更新操作理解ActiveRecord类 73
5.2.6 通过删除操作理解ActiveRecord类 74
5.3 项目实现迭代五:首页“行业百科”数据查询 75
5.4 项目实现迭代六:在“文章添加”页面实现数据插入 77
5.5 小结 78
第6章 ActiveRecord模型类的查询方法 79
6.1 ActiveRecord模型类的find()方法与查询执行流程 79
6.2 查询方法find()实例 80
6.2.1 实现带有逻辑运算符和比较运算符的查询 81
6.2.2 实现范围比较查询 81
6.2.3 实现模糊查询 82
6.3 查询构建类ActiveQuery 82
6.3.1 ActiveQuery成员属性简介 83
6.3.2 ActiveQuery成员方法简介 84
6.3.3 Query类where()成员方法简介 85
6.4 关联查询 87
6.5 项目实现迭代七:完成首页中的数据填充 90
6.5.1 实现幻灯片切换 90
6.5.2 实现成功案例 92
6.5.3 实现其他栏目的文章内容查询 94
6.6 小结 102
第7章 Widget(小部件) 103
7.1 调用小部件的两种方式 103
7.1.1 调用widget()方法使用小部件DatePicker 103
7.1.2 调用begin()和end()方法使用小部件ActiveForm 106
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图页面中的HTML表单标签 108
7.2.1 调用小部件ActiveForm 108
7.2.2 “文章标题”文本输入框 109
7.2.3 “文章栏目”下拉列表框 115
7.2.4 “文章图片”上传文件输入框 118
7.2.5 “内容”文本输入域 119
7.3 自定义小部件 121
7.3.1 继承Widget 121
7.3.2 自定义小部件的MVC结构 125
7.4 项目实现迭代九:自定义首页幻灯片小部件 128
7.5 项目实现迭代十:分页显示列表页 131
7.5.1 分页组件Pagination 131
7.5.2 新闻中心列表页实现数据填充 135
7.5.3 分页的超链接列表小部件LinkPager 137
7.6 小结 139
第8章 前端资源管理 140
8.1 初识资源包类 141
8.2 Yii2框架资源管理代码分析 143
8.2.1 视图中注册资源包类 143
8.2.2 注册资源文件 145
8.2.3 输出缓冲区的数据 148
8.3 AssetBundle类的成员属性 149
8.4 项目实现迭代十一:本书配套项目实现前端资源管理 151
8.4.1 实现首页前端资源管理 151
8.4.2 实现新闻中心列表页前端资源管理 154
8.5 小结 157
第9章 ActiveRecord模型验证 158
9.1 模型中编写验证规则 159
9.2 控制器中安全赋值 161
9.3 控制器中触发验证 163
9.4 视图中提取错误信息 164
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证 165
9.6 小结 169
第10章 AJAX验证 170
10.1 AJAX简介 170
10.2 传统的JavaScript实现AJAX验证 171
10.2.1 创建AJAX引擎XMLHttpRequest对象 173
10.2.2 创建HTTP请求 174
10.2.3 设置响应HTTP请求状态变化的方法 175
10.2.4 设置获取服务器返回数据的语句 176
10.2.5 发送HTTP请求 177
10.3 jQuery实现AJAX验证 177
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证 179
10.5 小结 184
第11章 用户登录 185
11.1 表单模型 185
11.2 客户端验证 187
11.2.1 ActiveForm实现客户端验证代码分析 187
11.2.2 项目实现迭代十四:完成登录页面的客户端验证 191
11.3 模型中的自定义方法作为rules()验证器 193
11.4 用于验证用户名和密码的身份类UserIdentity 197
11.5 项目实现迭代十五:完成用户登录 200
11.6 保存用户登录状态的yii\web\User类 204
11.7 小结 207
第12章 基于角色的访问控制 208
12.1 访问控制技术综述 208
12.2 RBAC简介 210
12.3 RBAC需求分析及功能概述 210
12.4 项目实现迭代十六:最简方式实现RBAC 211
12.4.1 数据库设计 211
12.4.2 用户管理 213
12.4.3 角色管理 214
12.4.4 权限管理 216
12.4.5 用户—角色配置管理 222
12.4.6 角色—权限配置管理 223
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现RBAC 224
12.5.1 基本概念 224
12.5.2 用户管理 229
12.5.3 角色管理 234
12.5.4 权限管理 239
12.5.5 权限管理系统验证 242
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC 243
12.6.1 配置 243
12.6.2 使用的数据库表 245
12.6.3 路由列表 246
12.6.4 角色列表 249
12.6.5 用户列表 249
12.6.6 菜单列表 251
12.6.7 集成AdminLTE后台主题及菜单展示 253
12.6.8 基于存取控制过滤器(ACF)的用户登录页面 255
12.7 小结 257
第13章 Yii2框架中的Memcached缓存应用 258
13.1 初识Memcached 258
13.2 Memcached在Web中的应用 259
13.2.1 减小数据库查询的压力 260
13.2.2 对海量数据的处理 260
13.3 Memcached的安装及管理 261
13.3.1 安装Memcached软件 262
13.3.2 Memcached服务器的管理 263
13.4 使用Telnet作为Memcached的客户端管理 263
13.4.1 Telnet客户端连接Memcached服务器 264
13.4.2 连接Memcached服务器 264
13.4.3 基本的Memcached客户端命令 265
13.4.4 查看当前Memcached服务器的运行状态信息 265
13.4.5 数据管理指令 267
13.5 PHP的Memcached客户端扩展函数库 269
13.5.1 安装php_memcache.dll扩展函数库 269
13.5.2 相关扩展方法 272
13.5.3 实例应用 279
13.6 Yii2框架MemCache缓存组件 281
13.6.1 配置使用MemCache缓存组件 281
13.6.2 缓存API 282
13.6.3 MemCache实例 284
13.7 缓存依赖 286
项目实现迭代十九:产品中心内容页中应用缓存依赖 286
13.8 片段缓存 288
13.8.1 片段缓存的起始和结束 289
13.8.2 小部件FragmentCache类部分构成 290
13.8.3 项目实现迭代二十:产品中心栏目实现片段缓存 292
13.9 页面缓存 294
项目实现迭代二十一:“关于我们”内容页中应用页面缓存 295
13.10 局部无缓存 297
13.11 Yii2框架其他缓存组件介绍 297
13.12 小结 299
第14章 日志 300
14.1 Apache服务器的日志 300
14.1.1 访问日志的格式 301
14.1.2 错误日志的格式 305
14.1.3 日志的定制 306
14.2 PHP日志 309
14.2.1 PHP配置文件“php.ini” 309
14.2.2 通过配置文件生成日志 310
14.2.3 通过方法记录日志到指定文件 311
14.2.4 错误信息记录到操作系统的日志里 311
14.3 Yii2框架的日志记录 313
14.3.1 记录日志消息 313
14.3.2 在配置文件中设置日志保存路径目标 315
14.4 小结 317
第15章 URL重写 318
15.1 关于URL 318
15.1.1 URL组成 318
15.1.2 良好的URL设计原则 319
15.2 初步认识Apache重写模块 320
15.3 Yii2框架的URL管理 324
15.3.1 创建URL 324
15.3.2 解析URL 328
15.3.3 URL模式 330
15.3.4 实现伪静态 331
15.3.5 带有正则表达式的URL规则 332
15.3.6 一个规则匹配多个路由 334
15.4 隐藏入口文件index.php 336
15.4.1 再次使用Apache重写模块 336
15.4.2 RewriteCond指令详解 337
15.4.3 Yii2框架创建URL时隐藏入口文件 343
15.5 小结 345
附录A HTTP状态消息 346
附录B Yii2相关PHP语法介绍 349
B.1 命名空间 349
B.1.1 命名空间的基本应用 350
B.1.2 命名空间的子空间和公共空间 351
B.1.3 命名空间中的名称和术语 352
B.1.4 别名和导入 353
B.2 PHP的输出缓冲控制 355
附录C 依赖管理工具Composer 359
C.1 安装Composer 359
C.2 安装Yii2 362
C.3 安装扩展组件yii2-widget-datepicker 369
C.4 安装扩展组件yii2-admin 370
C.5 安装扩展组件yii2-adminlte-asset 373