本书以目前PHP的较新版本PHP 5.0为依托,结合PHP语言特性和实战案例,充分融入了企业开发过程中编程人员遇到的种种核心技术问题的解决方案和编程思想,系统、全面地介绍了PHP语言的基础知识、高级编程技术及应用方向。
书中的内容由浅入深、循序渐进,囊括了PHP基本语法、数组和常用函数、PHP面向对象的编程思想,还包括一些PHP高级特性,并且将一些比较流行的项目融入本书中,如仿记事狗微博系统、Smarty项目、博客管理系统等,使读者在较短的时间内就能够熟练掌握PHP特性和项目实战的方方面面。
本书在讲解的过程中,结合PHP知识点引用了大量的应用案例,并通过源代码一一列举,且每一部分内容都包含详细的注释和技巧提示,有助于初学者理解、把握问题的精髓,将所掌握的技术灵活应用到后期实际的项目开发过程中。
本书适合初学者使用,也可作为广大软件开发人员和编程爱好者的参考用书。
PHP(原为Personal Home Page的缩写,现已更名为“PHP: Hypertext Preprocessor”,超文本预处理器)是一种通用的开源脚本语言。PHP吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。
本书选用了大量的常见案例,将PHP语言特性通过实战代码一一呈现,使读者不用刻意去记忆其中的理论,就可以轻松掌握编程技能。本书的案例代码注释详细,很多部分都通过截图的形式展现出来,让读者一目了然。书中具有代表性的操作通过步骤的形式一步一步地进行引导和讲解,让读者不仅能知其所以然,而且还能编出自己的应用程序,具有较高的实用价值。讲解过程中,还对初学者容易犯的一些错误提供了相应的解决方案和应注意的事项说明或提示。这些错误都是作者在开发和教学过程中实践经验的总结,目的是让读者在最短的时间内,掌握最核心、最实用的技术。
本书共分为16章,各章节简介如下。
第1、2章:介绍PHP环境的安装配置、PHP程序的开发过程和PHP语言的基本语法。
第3章:介绍函数的应用。PHP真正的威力源自于它的函数。
第4章:介绍一种非常重要的数据类型——数组。
第5、6章:介绍字符串操作,以及在字符串中占有举足轻重地位的正则表达式。
第7章:介绍面向对象的程序开发,包括面向对象的编程思想:类和方法、魔术方法等。介绍面向对象的分析与设计思想以及一些常用的设计习惯,对后期编程将会起到一定的指导作用。
第8章:介绍错误与异常处理。错误与异常处理是PHP语言在健壮性上的体现,建议读者能熟练掌握。
第9章:介绍PHP文件处理,包括对文件及目录的多种操作,如创建、删除、复制等。
第10章:介绍PHP文件上传,主要针对文件上传的相关函数进行讲解。
第11章:介绍PHP的会话机制。会话机制在PHP中用于保存访问中的数据。可以帮助开发者创建更为人性化的程序,增加站点的吸引力。
第12章:介绍PHP对数据库的相关操作。开发过程中,大量数据被存储在数据库中,因此连接数据库是任何一种语言都必须面对的,希望读者对其中重要的应用和典型技巧能够熟练地掌握。
第13章:介绍PHP的MVC设计模式。
第14~16章:介绍仿记事狗微博系统、Smarty项目、博客管理系统。通过多多研究和模仿,相信读者会有意外的发现。
本书由耿兴隆、张莹、薛玉倩编著,同时参加本书编写的人员还有张新颖、于坤、郑经煜、李红霞、李天志、孙连伟、吴慧龙、胡波、卞志成、肖立君、赵清晨、刘烨、容艳华、尼春雨、王国胜等。
由于编者水平有限,书中难免有疏漏和不足之处,恳请专家和广大读者指正。
编 者
第1章 PHP简介1
1.1 PHP概述2
1.1.1 什么是PHP2
1.1.2 PHP的特点2
1.2 Windows下PHP运行环境的搭建3
1.2.1 安装运行环境3
1.2.2 集成软件介绍16
1.2.3 常用开发工具介绍17
1.2.4 第一个PHP程序18
1.3 上机练习18
第2章 PHP的基本语法19
2.1 PHP的重要符号20
2.1.1 PHP语言标记20
2.1.2 PHP代码的注释22
2.1.3 PHP的空白符24
2.1.4 PHP的指令分隔符24
2.2 PHP的数据类型25
2.2.1 标量数据类型26
2.2.2 复合数据类型31
2.2.3 特殊数据类型32
2.3 数据类型转换34
2.3.1 隐式转换(自动转换)34
2.3.2 显式转换(强制转换)36
2.4 常量与变量37
2.4.1 常量37
2.4.2 变量39
2.4.3 变量的作用域41
2.4.4 可变变量44
2.4.5 变量的销毁45
2.5 PHP的运算符47
2.5.1 赋值运算符47
2.5.2 算术运算符48
2.5.3 比较运算符50
2.5.4 逻辑运算符51
2.5.5 按位运算符51
2.5.6 字符串运算符52
2.5.7 错误控制运算符53
2.5.8 其他运算符53
2.5.9 运算符的优先级54
2.6 流程控制语句55
2.6.1 条件控制语句55
2.6.2 循环控制语句59
2.6.3 跳转控制语句62
2.7 上机练习64
第3章 函数的应用67
3.1 自定义函数68
3.1.1 函数定义与调用68
3.1.2 函数的参数69
3.1.3 函数返回值71
3.1.4 变量函数71
3.1.5 函数的引用72
3.1.6 递归函数73
3.2 内置函数74
3.2.1 日期时间函数74
3.2.2 数学函数78
3.2.3 变量相关的函数79
3.3 包含文件81
3.3.1 include和require81
3.3.2 include_once和require_once82
3.4 上机练习82
第4章 PHP数组83
4.1 数组的定义84
4.1.1 数组的声明84
4.1.2 数组的分类85
4.1.3 数组的构造85
4.2 遍历数组86
4.3 数组的常用操作90
4.3.1 统计数组元素个数90
4.3.2 数组与字符串的转换91
4.3.3 数组的查找93
4.3.4 数组的排序94
4.3.5 数组的拆分与合并97
4.4 PHP预定义数组99
4.5 上机练习100
第5章 字符串操作101
5.1 认识字符串102
5.2 字符串表示形式102
5.3 字符串常用操作103
5.3.1 字符串连接103
5.3.2 获取字符串长度104
5.3.3 去掉字符串的首尾空格和特殊字符104
5.3.4 大小写转换105
5.3.5 字符串截取106
5.3.6 字符串查找107
5.3.7 字符串替换107
5.4 上机练习108
第6章 正则表达式109
6.1 什么是正则表达式110
6.1.1 正则表达式简介110
6.1.2 PHP中正则表达式的作用110
6.2 正则表达式的基础语法110
6.2.1 元字符111
6.2.2 模式修正符112
6.3 POSIX扩展正则表达式函数113
6.3.1 字符串匹配函数——ereg()和eregi()113
6.3.2 字符串替换函数——ereg_replace()和eregi_replace()113
6.3.3 字符串拆分函数——split()和spliti()114
6.4 Perl兼容正则表达式函数115
6.4.1 对数组查询匹配函数——preg_grep()116
6.4.2 字符串匹配函数preg_match()和preg_match_all()117
6.4.3 转义特殊字符函数——preg_quote()118
6.4.4 搜索和替换函数——preg_replace()118
6.4.5 字符串拆分函数——preg_split()120
6.5 测试正则表达式120
6.5.1 RegexBuddy120
6.5.2 JavaScript正则表达式在线测试工具121
6.6 上机练习121
第7章 面向对象的程序开发123
7.1 面向对象的概念124
7.2 类和对象124
7.2.1 类和对象的关系124
7.2.2 类中的属性125
7.2.3 类中的方法128
7.2.4 构造方法130
7.2.5 析构函数与PHP的垃圾回收机制131
7.3 继承132
7.3.1 怎样继承一个类133
7.3.2 修饰符的使用135
7.3.3 重写136
7.3.4 parent::关键字139
7.3.5 重载140
7.4 高级特性142
7.4.1 静态属性和方法142
7.4.2 final类和方法145
7.4.3 常量属性147
7.4.4 abstract类和方法147
7.5 接口149
7.6 PHP 5中的魔术方法150
7.6.1 __set方法151
7.6.2 __get方法152
7.6.3 __call方法153
7.6.4 __toString方法154
7.7 上机练习154
第8章 错误和异常处理157
8.1 PHP的错误处理机制158
8.2 自定义错误处理160
8.3 PHP异常处理162
8.3.1 异常的抛出与捕获162
8.3.2 基本异常(Exception)类介绍163
8.3.3 自定义异常164
8.3.4 捕获多个异常165
8.4 上机练习166
第9章 PHP文件处理167
9.1 查看文件和目录168
9.1.1 查看文件名称168
9.1.2 显示目录名称168
9.1.3 查看文件真实目录169
9.2 查看文件信息169
9.2.1 显示文件类型169
9.2.2 显示文件访问与修改时间170
9.2.3 获取文件权限171
9.3 操作目录171
9.3.1 创建目录171
9.3.2 打开目录172
9.3.3 关闭目录173
9.3.4 读取目录173
9.3.5 删除目录173
9.4 操作文件174
9.4.1 打开文件/关闭文件174
9.4.2 读取文件175
9.4.3 写入文件178
9.4.4 删除文件179
9.4.5 复制文件179
9.4.6 移动文件和重命名文件180
9.5 小结180
9.6 综合练习181
第10章 PHP文件上传183
10.1 文件上传的基本知识184
10.1.1 文件上传种类184
10.1.2 表单特性184
10.2 全局变量$_FILES185
10.3 单文件上传185
10.4 多文件上传188
10.5 综合练习189
10.6 小结192
第11章 PHP的会话机制193
11.1 通过Session和Cookie实现会话处理194
11.2 使用Session194
11.2.1 什么是Session194
11.2.2 Session的常用函数194
11.2.3 Session的生命周期197
11.2.4 使用Session控制PHP页面缓存197
11.2.5 Session的安全问题198
11.3 使用Cookie199
11.3.1 什么是Cookie199
11.3.2 Cookie的工作机制200
11.3.3 Cookie的创建与销毁200
11.3.4 PHP中怎样获取Cookie203
11.4 使用Session和Cookie时应注意的问题203
11.5 综合练习204
11.6 小结205
第12章 PHP操作MySQL数据库207
12.1 数据库的访问208
12.1.1 连接MySQL服务器208
12.1.2 关闭MySQL连接208
12.1.3 选择MySQL数据库209
12.1.4 执行SQL语句209
12.1.5 处理查询结果集210
12.1.6 SQL语句的基本使用213
12.1.7 MySQL用户的创建与授权217
12.2 数据库的操作220
12.2.1 获取服务器上的所有数据库220
12.2.2 获取数据库内的表221
12.2.3 获取数据表的字段信息221
12.2.4 获取错误信息222
12.2.5 两个小应用222
12.3 PHP操作MySQL数据库225
12.3.1 添加留言信息225
12.3.2 分页显示留言信息228
12.3.3 查询单条留言的详细信息230
12.3.4 编辑留言信息231
12.3.5 删除留言信息233
12.4 小结234
12.5 上机练习234
第13章 PHP MVC程序设计237
13.1 MVC简介238
13.1.1 模型238
13.1.2 视图238
13.1.3 控制器238
13.2 使用MVC开发微博项目238
13.2.1 需求分析238
13.2.2 用例图239
13.2.3 数据库结构239
13.2.4 项目及数据库搭建240
13.3 Smarty简介261
13.4 Smarty的安装与配置262
13.4.1 Smarty的安装263
13.4.2 Smarty的配置264
13.4.3 第一个Smarty程序266
13.5 Smarty的使用步骤267
13.6 Smarty变量269
13.6.1 在模板中输出PHP分配的变量269
13.6.2 模板中输出PHP分配的变量271
13.6.3 变量调节器272
13.6.4 Smarty中变量的使用278
13.6.5 Smarty中流程控制语句的使用279
13.6.6 开启缓存279
13.6.7 设置缓存生命周期280
13.7 流程控制281
13.7.1 条件选择结构if-else281
13.7.2 foreach语句282
13.7.3 section284
13.8 Smarty的缓存处理285
13.8.1 在Smarty中控制缓存285
13.8.2 一个页面多个缓存286
13.8.3 为缓存实例消除处理开销287
13.8.4 清除缓存288
13.8.5 关闭局部缓存288
13.9 综合练习290
13.10 小结305
第14章 仿记事狗微博项目307
14.1 系统概述308
14.2 需求分析308
14.3 开发环境308
14.4 数据库结构308
14.5 项目的开发310
14.5.1 用户注册310
14.5.2 用户登录314
14.5.3 首页显示315
14.6 总结328
第15章 Smarty项目329
15.1 系统概述330
15.2 需求分析330
15.3 开发环境330
15.4 数据库结构330
15.5 后台功能的实现332
15.5.1 管理用户登录332
15.5.2 后台主界面334
15.5.3 景点列表页面335
15.5.4 景点列表的编辑338
15.5.5 景点信息的添加340
15.6 前台界面343
15.6.1 前台首页面343
15.6.2 杭州旅游的主页347
15.6.3 景点大全353
15.7 总结358
15.8 上机练习358
第16章 博客管理系统(Apache+PHP+MySQL实现)359
16.1 需求分析360
16.2 系统设计360
16.2.1 系统功能结构360
16.2.2 系统流程图361
16.2.3 开发环境361
16.2.4 文件夹的组织结构362
16.3 数据库设计362
16.3.1 数据库概念设计362
16.3.2 数据库物理结构设计363
16.4 首页设计364
16.4.1 首页技术分析365
16.4.2 首页的实现过程365
16.5 博文管理模块的设计370
16.5.1 博文管理模块的技术分析370
16.5.2 添加博文的实现过程372
16.5.3 博文列表的实现过程373
16.5.4 查看博文、评论的实现过程377
16.5.5 删除文章、评论的实现过程383
16.6 图片上传模块的设计384
16.6.1 图片上传模块的技术分析384
16.6.2 图片上传的实现过程385
16.6.3 图片浏览与删除的实现过程386
16.7 朋友圈模块设计392
16.7.1 朋友圈模块技术分析392
16.7.2 查询好友的实现过程393
16.8 本章总结398