基础篇 2
第1章 开发前准备 2
1.1 PHP与MVC概述 3
1.2开发环境搭建 7
1.2.1在Windows下使用一键安装包 8
1.2.2在Linux平台安装LNMP 11
1.3开发工具介绍 20
1.3.1 PHP Coder 20
1.3.2 PHP Editor 21
1.3.3 NetBeans IDE 21
1.3.4 Eclipse PDT 22
1.3.5 Zend Studio 24
1.3.6 Adobe Dreamweaver 25
1.3.7 VS.PHP 27
1.4 SVN版本控制 28
1.4.1 SVN介绍 28
1.4.2 SVN的安装 29
1.4.3 TortoiseSVN的简单使用 32
1.4.4 TortoiseSVN文件管理 35
1.4.5 SVN版本库权限配置 38
1.5小结 40
第2章 面向对象基础 41
2.1面向对象介绍 42
2.2 PHP面向对象基础 43
2.2.1 class关键字 43
2.2.2类中的成员 44
2.2.3实例化类 46
2.3类中的方法 47
2.3.1方法的参数 47
2.3.2方法的返回值 48
2.3.3访问修饰符 49
2.3.4 $this关键字 50
2.4类的继承 50
2.4.1子类继承父类 51
2.4.2重写父类中的成员属性 52
2.4.3 final关键字 53
2.5静态类成员 54
2.5.1 static关键字 54
2.5.2访问静态类成员(self :parent:) 55
2.5.3类常量 57
2.6小结 58
第3章 类的高级特性 59
3.1类对象的克隆(clone) 60
3.2类接口(interface) 60
3.2.1接口的意义 60
3.2.2定义接口 61
3.2.3实现接口(implements) 62
3.3抽象类与抽象方法 64
3.3.1理解抽象概念 65
3.3.2定义抽象类和方法(abstract) 65
3.3.3使用抽象类 66
3.3.4接口与抽象类的区别 67
3.4类的异常 68
3.4.1 Exception类 68
3.4.2使用try、 catch、 throw语句 69
3.5小结 70
实战篇 72
第4章 PHP MVC发展状况 72
4.1出身豪门的Zend Framework 73
4.1.1 Zend Framework简介 73
4.1.2安装Zend Framework 73
4.1.3使用Zend Framework实现MVC 75
4.1.4 Zend Framework核心组件 76
4.2功能强大的Symfony 80
4.2.1 Symfony简介 80
4.2.2获得Symfony 81
4.2.3实现一个简单的MVC 82
4.2.4 Symfony的配置文件 85
4.3灵活完善的CakePHP 85
4.3.1 CakePHP简介 85
4.3.2下载安装CakePHP 86
4.3.3使用CakePHP构建MVC编程 86
4.3.4好用的CakePHP视图助手 89
4.4使用广泛的CodeIgniter 89
4.4.1 CodeIgniter简介 89
4.4.2安装CodeIgniter 90
4.4.3使用CodeIgniter实现MVC 91
4.5高效便捷的ThinkPHP 94
4.5.1 ThinkPHP介绍 94
4.5.2下载安装ThinkPHP 95
4.5.3使用ThinkPHP实现MVC 96
4.5.4高效的 ThinkPHP视图引擎 98
4.6小结 100
第5章 ThinkPHP开发入门 101
5.1大道至简、开发由我 102
5.1.1入口文件 102
5.1.2两种创建项目的方式 103
5.1.3模块分组 104
5.2 ThinkPHP目录 106
5.2.1系统目录 106
5.2.2项目目录 110
5.3配置文件 111
5.3.1选项配置 111
5.3.2静态缓存配置 113
5.3.3路由配置 115
5.4小结 115
第6章 ThinkPHP开发MVC应用 116
6.1 ThinkPHP中的URL 117
6.1.1 URL模式 117
6.1.2 URL路由 119
6.1.3自动生成匹配的URL 121
6.1.4实现文件伪静态 122
6.2模型(Model) 123
6.2.1创建模型 123
6.2.2实例化模型 124
6.2.3模型初始化(_initialize()) 125
6.3控制器(Controller) 126
6.3.1创建控制器 126
6.3.2控制器中的动作(Action) 126
6.3.3控制器的调用 128
6.3.4项目空控制器与控制器空动作 129
6.3.5动作的前后操作 131
6.4视图(View) 132
6.4.1创建和使用视图 132
6.4.2系统变量与常量 133
6.4.3在视图中使用函数 134
6.4.4数据循环 135
6.4.5条件判断 138
6.4.6使用外部文件 141
6.4.7导入标签库 142
6.4.8使用布局 145
6.5小结 147
第7章 ThinkPHP的数据库操作 148
7.1定义数据表模型 149
7.1.1模型映射 149
7.1.2自定义模型 149
7.1.3 create方法 151
7.1.4模型属性 154
7.2基础模型(Model) 158
7.2.1连贯操作 159
7.2.2 CURD 159
7.2.3查询语言 163
7.2.4使用原生的SQL语言 166
7.3关联模型(RelationModel) 167
7.3.1关联关系 167
7.3.2关联定义 168
7.3.3关联模型的CURD 169
7.4高级模型(AdvModel) 174
7.4.1定位查询 174
7.4.2动态查询 175
7.4.3内容存文本 176
7.5大数据支持 176
7.5.1分布式数据库 177
7.5.2读写分离 179
7.5.3数据表分区 183
7.6小结 187
第8章 安全与调试 188
8.1构建稳健及安全的MVC 189
8.2 ThinkPHP内置的安全机制 189
8.2.1表单令牌 189
8.2.2字段检测 190
8.2.3数据验证 193
8.2.4数据验证码 197
8.3 ThinkPHP安全日志机制 201
8.3.1记录方式 201
8.3.2系统日志 202
8.3.3应用日志 202
8.4使用消息队列机制 204
8.4.1 HTTPSQS基础 204
8.4.2安装HTTPSQS 205
8.4.3测试HTTPSQS 207
8.4.4在MVC中使用HTTPSQS 209
8.5 ThinkPHP程序调试机制 212
8.5.1开启调试功能 212
8.5.2代码编译概念 214
8.5.3异常定制 215
8.5.4性能调试 216
8.6小结 218
第9章 ThinkPHP功能库 220
9.1数据处理 221
9.1.1 XML引擎 221
9.1.2返回XML 228
9.1.3返回Json 232
9.1.4使用Json及Jsonp 235
9.2 ThinkPHP函数库 241
9.2.1快捷方法 241
9.2.2基础函数库 242
9.2.3扩展函数库 245
9.3 ThinkPHP多语言支持 248
9.3.1部署多语言 248
9.3.2实现多语言 249
9.3.3多语言与客户端 250
9.4客户端 252
9.4.1封装的Session 252
9.4.2封装的Cookie 256
9.5小结 257
第10章 网站静态化 259
10.1 Cache类 260
10.1.1缓存的方式 260
10.1.2开启缓存 260
10.1.3安装Memcached 261
10.1.4使用Memcached 265
10.2 Memcached实战应用 267
10.2.1页面局部缓存 267
10.2.2缓存数据集 267
10.2.3使用Memcache存放Session 270
10.3使用Redis缓存 274
10.3.1 Redis的安装 274
10.3.2安装Redis扩展 277
10.3.3测试Redis 279
10.3 4 Redis缓存 279
10.4静态缓存 282
10.4.1静态缓存配置 282
10.4.2静态缓存规则 283
10.5小结 286
第11章 ThinkPHP扩展 287
11.1使用扩展 288
11.1.1扩展的分类 288
11.1.2模板引擎扩展 291
11.2网络操作 293
11.2.1文件上传 293
11.2.2 Nginx文件上传进度 295
11.2.3 FTP文件上传 304
11.2.4下载文件 305
11.2.5 Socket套接字编程 306
11.2.6定位当前位置 308
11.2.7发送电子邮件 309
11.3数据处理 311
11.3.1数据加密 311
11.3.2数据编码转换 313
11.3.3数据分页 314
11.3.4日期数据 315
11.3.5 Input类 317
11.3.6 GD库绘制图形 318
11.4行为扩展 320
11.4.1行为概述 320
11.4.2内置行为扩展 322
11.4.3自定义行为扩展 323
11.5小结 325
第12章 SOAP分布式开发 326
12.1分布式开发概念 327
12.1.1 SOA与SOAP 327
12.1.2 PHP 5分布式开发 329
12.2 SOAP消息体 331
12.2.1 WSDL文件 331
12.2.2定义根消息体definitions 335
12.2.3 type类型 335
12.2.4 portType端口类型 336
12.2.5 message消息列表 337
12.2.6 binding服务绑定描述 337
12.2.7 service服务描述 338
12.2.8可视化创建WSDL 338
12.2.9使用nusoap创建WSDL 341
12.2.10 ThinkPHP生成SOAP服务 343
12.3使用soapUI测试WSDL 347
12.3.1 soapUI简介 347
12.3.2安装soapUI 348
12.3.3创建项目 349
12.3.4测试项目 350
12.3.5负载测试 351
12.4小结 353
第13章 整合Smarty模板引擎 354
13.1 Smarty模板引擎介绍 355
13.2使用Smarty 356
13.2.1在PHP中使用Smarty 356
13.2.2开启ThinkPHP模板扩展 358
13.2.3以扩展的方式使用全功能Smarty 358
13.3 Smarty模板函数和标签 360
13.3.1 include(包含文件) 361
13.3.2 capture(暂存数据) 361
13.3.3 include_php(包含PHP文件) 362
13.3.4 insert(插入函数) 362
13.3.5 literal(原文本输出) 363
13.3.6 php(执行PHP语句块) 363
13.3.7 strip(保留空格和回车符) 364
13.4 Smarty模板控制语句 364
13.4.1 if、elseif(判断语句) 364
13.4.2 foreach(循环数据) 365
13.4.3 section(遍历数组) 366
13.5变量调节器 367
13.5.1 capitalize(首字母大写) 367
13.5.2 count characters(统计字符) 367
13.5.3 count_paragraphs(统计段落) 367
13.5.4 count sentences(统计句数) 368
13.5.5 count words(统计单词) 368
13.5.6 date_ format(格式化日期) 368
13.5.7 escape(字符转码) 369
13.5.8 replace(字符替换) 369
13.5.9 regex_replace(正则替换) 370
13.5.10 truncate(字符截取) 370
13.6视图助手 370
13.6.1 html_image(生成图像) 370
13.6.2 html_options(生成表单选择组件) 371
13.6.3 html radios(生成表单单选组件) 372
13.6.4 html checkboxes(生成表单复选组件) 373
13.6.5 html select date(生成表单日期选择组件) 374
13.6.6 html select time(生成表单时间选择组件) 376
13.6.7 html table(生成表格) 377
13.7 Smarty对象方法 378
13.7.1 display(显示模板) 378
13.7.2 fetch(获取输出内容) 379
13.7.3 configLoad(加载配置信息) 379
13.7.4 registerPlugin(注册插件) 380
13.8 Smarty缓存 383
13.8.1开启缓存 383
13.8.2局部缓存 384
13.9小结 386
第14章 整合Coreseek全文搜索服务 387
14.1全文索引概述 388
14.2 Coreseek基础 389
14.2.1 Coreseek概述 389
14.2.2在Windows下安装Coreseek 390
14.2.3在Linux下安装Coreseek 394
14.3 Coreseek管理工具 397
14.3.1 indexer 397
14.3.2 searchd 400
14.3.3 search 402
14.4创建索引 403
14.4.1索引源分类 403
14.4.2增量索引 407
14.4.3实时索引 409
14.5在MVC中搜索数据 412
14.5.1安装Sphinx扩展模块 412
14.5.2使用PHP接口 413
14.5.3在MVC中搜索数据 414
14.5.4实现关键词高亮显示 418
14.6小结 420
第15章 使用MongoDB 421
15.1 MongoDB介绍 422
15.2 MongoDB的安装 424
15.2.1在Windows下安装MongoDB 424
15.2.2在Linux下安装MongoDB 426
15.3 MongoDB的使用 428
15.3.1理解MongoDB的数据结构 428
15.3.2数据库管理 429
15.3.3文档数据类型 430
15.3.4插入数据 432
15.3.5查询数据 433
15.3.6更新数据 436
15.3.7删除数据 436
15.4条件操作 437
15.4.1条件判断语句 437
15.4.2 $all匹配全部 438
15.4.3 $exists检查字段 438
15.4.4 null空值处理 439
15.4.5 $ne比较 439
15.4.6 $mod取模运算 440
15.4.7 $in、 nin枚举查询 440
15.4.8 $or、 $nor判断查询 441
15.4.9 $type映射查询 442
15.4.10使用正则表达式匹配 442
15.4.11 limit、skip限制查询 443
15.4.12 count查询记录条数 444
15.4.13 sort查询结果排序 444
15.5性能优化 445
15.5.1使用索引 445
15.5.2固定集合 448
15.5.3 GridFS 450
15.5.4 Profile优化器 450
15.6在MVC中使用MongoDB 451
15.6.1安装PEP扩展 451
15.6.2开启MongoDB用户验证 453
15.6.3 ThinkPHP操作MongoDB 455
15.7小结 459
第16章 Redis实战 460
16.1 Redis的使用 461
16.1.1 Redis概述 461
16.1.2常用管理命令 462
16.1.3 Redis用户验证 464
16.2 Redis数据类型 465
16.2.1 String类型 465
16.2.2 Hash类型 467
16.2.3 List类型 469
16.2.4 Sets类型 473
16.2.5 Zset类型 477
16.2.6使用phpRedisAdmin 480
16.3 Redis高级使用 483
16.3.1数据持久化 483
16.3.2虚拟内存 484
16.3.3事务处理 484
16.3.4主从同步 486
16.4在MVC中使用Redis 487
16.4.1在pHp中使用Redis 487
16.4.2在MVC中进行CURD操作 491
16.4.3数据分页 496
16.5小结 498
项目篇 500
第17章 开发论坛系统 500
17.1开发前准备 501
17.1.1系统介绍 501
17.1.2系统预览 501
17.1.3架构设计 505
17.1.4系统部署 511
17.2系统整体界面设计 513
17.2.1布局方案 514
17.2.2论坛首页 516
17.2.3论坛版块 519
17.3用户模块 524
17.3.1用户登录 524
17.3.2用户注册 528
17.3.3使用微博账号登录 532
17.3.4将现有账号绑定到微博 535
17.4发表帖子模块 537
17.4.1整合百度编辑器 537
17.4.2上传图片 540
17.4.3管理图片 542
17.4.4上传附件 543
17.4.5数据提交处理 544
17.5帖子内容模块 545
17.5.1帖子正文 545
17.5.2回复列表 547
17.5.3回复帖子 550
17.6帖子管理模块 551
17.6.1删除帖子 551
17.6.2锁定帖子 553
17.6.3置顶帖子 554
17.6.4推荐帖子 554
17.7行为拦截器 555
17.7.1统计浏览量 555
17.7.2登记浏览位置 556
17.8帖子搜索模块 557
17.8.1标题搜索 557
17.8.2使用全文搜索 558
17.9小结 562
第18章 开发自己的MVC框架 563
18.1开发前准备 564
18.1.1开发MVC框架的思路 564
18.1.2文件结构 564
18.2核心类库 565
18.2.1初始化 565
18.2.2 URL处理 566
18.3控制器的开发 567
18.3.1类自动载入 568
18.3.2加载模板引擎(View) 569
18.3.3处理消息(message) 569
18.4模型的开发 572
18.4.1使用PDO 572
18.4.2模型实例化 573
18.4.3实现连贯操作 573
18.4.4读取数据 574
18.4.5插入数据 576
18.4.6更新数据 577
18.4.7删除数据 578
18.5扩展类库 582
18.5.1 Session驱动扩展 583
18.5.2缓存驱动扩展 586
18.6测试MVC框架 588
18.6.1创建项目 589
18.6.2测试CURD 590
18.6.3测试驱动 594
18.7小结 595
附录 596
附录A让Nginx支持Pathinfo模式 596
附录B配置团队开发环境 597