《细说PHP(第2版)》图书信息
细说PHP(第2版)(含DVD光盘1张)
(经典畅销书升级版,全面覆盖PHP学习关键点,150小时超大容量视频教学)
LAMP兄弟连 组编
高洛峰编著
ISBN 978-7-121-18563-2
2012年10月出版
定价:109.00元(含DVD光盘1张)
16开
828页
经典畅销书升级版,全面覆盖PHP学习关键点,150小时超大容量视频教学
内容简介
PHP是开发Web应用系统最理想的工具,易于使用、功能强大、成本低廉、高安全性、开发速度快且执行灵活。全书以实用为目标设计,包含PHP开发最主流的各项技术,对每一个知识点都进行了深入详细的讲解,并附有大量的实例代码,图文并茂。系统地介绍了PHP的相关技术及其在实际Web开发中的应用。
全书共六个部分,分为30个章节,每一章都是PHP独立知识点的总结。内容涵盖了动态网站开发的前台技术(HTML+CSS)、PHP编程语言的语法、PHP的常用功能模块和实用技巧、MySQL数据库的设计与应用、PHP 面向对象的程序设计思想、数据库抽象层PDO、Smarty模板技术、Web开发的设计模式、自定义框架BroPHP、Web项目开发整个流程等目前PHP开发中最主流的技术。每一章中都有大量的实用示例,以及详尽的注释,加速读者的理解和学习,也为每章的技术点设置了大量的自测试题。最后以一个比较完整的、采用面向对象思想,以及通过MVC模式设计,并结合Smarty模板,基于BroPHP框架的CMS系统为案例,详细介绍了Web系统开发从设计到部署的各个细节,便于更好地进行开发实践。
对于PHP应用开发的新手而言,本书不失为一本好的入门教材,内容既实用又全面,所有实例都可以在开发中直接应用,并辅以大量的视频教程,使读者轻松掌握所学知识。另外,本书也适合有一定基础的网络开发人员和网络爱好者,以及大中专院校的师生阅读与参考。不仅可以作为PHP开发的学习用书,还可以作为从事Web开发的程序员的参考用书和必备手册。对于行家来说,本书也是一本难得的参考手册,读者必将从中获益。
作者简介
现任北京LAMP兄弟连(易第优教育)教学总监,五年软件开发工作经验,四年IT教学工作经验。曾在多家上市企业担任过技术总监、项目经理、高级软件工程师等职务,具有扎实的技术功底。国内资深的高级技术认证讲师,从事IT培训以来累计授课长达6000课时以上,培训近千名学员成功走向IT岗位,具有丰富的IT教学经验。熟悉掌握Unix/Linux/Windows等多种操作系统,一直从事嵌入式、C\C++、J2EE、J2ME、J2SE、PHP及Oracle数据库等技术研发工作。其中,对Web系统软件开发深有研究,近年来致力于推广LAMP开源平台系列软件。
名家推荐
本书内容充实,是作者多年丰富PHP授课经验的总结,为初学者首选教材。
------腾讯开放平台副总经理/腾讯云平台负责人 陈磊
敏捷高效开发是PHP的一大特性,从书中掌握设计思想,学而实习,必将获益匪浅。
------盛大云北京研发部经理/PHPCMS负责人 王参加
此书对于PHP爱好者,可谓一本好书,内容详尽实用,结构组织符合实战需求,我诚挚推荐。
------北京4399轻电商团队技术总监 张宴
内容详尽,由浅入深,覆盖全面,藏经之作。
------ ThinkPHP框架创始人 刘晨
LAMP兄弟连
无兄弟,不编程
《细说PHP(第2版)》是在第1版热销的基础上,与兄弟连六年教学实践的完美结合。
六年时间,兄弟连由一个名不见经传的小公司,成长为国内PHP培训领域翘楚,累计培训PHP程序员四千余人、论坛会员突破十万、技术视频下载量逾百万、电子杂志《草根》日渐成熟、《细说PHP(第1版)》图书销量更是名列PHP原创图书之首。《细说PHP(第2版)》的出版也是对兄弟连多年教学积累的梳理与总结,书中穿插了更多的教学案例、课后习题,辅以原创视频,加入了兄弟连课程体系中特级课的部分知识点,逻辑性更强,知识点更加完善。
第2版历时一年多,作者高洛峰对本书倾注了大量的心血,除延续第1版深入浅出、循序渐进、剖析细致等特点外,结合自身多年的教学经验,力求做到更精炼、更实用、更全面。
写作本书的初衷不仅是开发一本培训教材,更主要的原因是希望推广PHP技术。兄弟连的学员越来越多,但更多人不一定有时间和精力参加面授学习,一本专业、全面的技术书籍无疑是他们最需要的。本书使读者对PHP技术有更深刻、更系统的了解,掌握Web系统开发的完整思路,通过本书内容的学习足以完成动态网站的建设和一些常用的Web系统软件开发工作。
兄弟连还将陆续推出PHP、Linux、Java、Android、Python等各方面的图书,期望可以对开源技术在国内的推广做出贡献,也希望广大读者朋友继续支持我们,支持兄弟连。我们也将一直秉承兄弟连的口号“无兄弟,不编程!”,让众多的技术爱好者、从业者、创业者团结起来,拓展人脉、相互学习、相互帮助,为未来的职业发展打下良好的基础。
今天的兄弟连,不仅仅是一所培训学校,更是技术人的筑梦工场,我们秉承兄弟连的核心价值:一是优秀的教学;二是严格的管理;三是职业素质课贯穿始终。教书育人,成就英才,一直是我们的目标,愿本书的出版,让更多朋友进入PHP的领域,成就自己的职业梦想!
关注兄弟连微博:http://weibo.com/lampbrother
兄弟连创始人 李超
前 言
PHP是一种开源免费的开发语言,具有程序开发速度快、运行快、技术本身学习快等快捷性的特点,无疑是当今Web开发中最佳的编程语言。与JSP和ASP相比,PHP具有简易性、高安全性和执行灵活等优点,使用PHP开发的Web项目,在软件方面的投资成本较低、运行稳定。因此现在越来越多的供应商、用户和企业投资者日益认识到,使用PHP开发的各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。无论是从性能、质量还是价格上,PHP都将成为企业和政府信息化所必须考虑的开发语言。
本书包括六大部分+附录,作为PHP学习的七个阶段,从了解Web开发构件开始到可以完成一个标准化高质量的项目为止。所有内容皆为当今Web项目开发必用的内容,涵盖了PHP的绝大多数知识点,对于某一方面的介绍再从多角度进行延伸。全部内容围绕PHP的面向对象思想设计编写,帮助读者深刻理解PHP开发技术,一步一步引导读者从PHP面向过程的开发模式进入到面向对象的开发时代。本书全部技术点以PHP 5最流行的版本为主,详细地介绍了PHP及与其相关的Web技术,可以帮助读者在较短的时间内熟悉并掌握比较实用的PHP技术。其中包括当前比较流行的DIV+CSS标准化网页布局、PHP面向对象技术、数据库抽象层PDO和Smarty3模板引擎、学习型PHP框架BroPHP等主流技术,实用性非常强。本书所涉及的实例全部以特定的应用为基础,读者在学习和工作过程中,可以直接应用本书给出的一些独立模块和编程思想。
本书编写的宗旨是让读者能拥有一本PHP方面的学习和开发使用的最好书籍,章节虽然不是很多,但对所罗列出的每个知识点都进行了细化和延伸,并力求讲解到位,让读者可以轻松地读懂。所介绍的知识点是不需要借助其他任何书籍进行辅助和补充的。而且对于几乎每个知识点都有对应且详实的可运行的代码配套,对所有实例代码都附有详细注释、说明及运行效果图。在大部分章节的最后一节都结合一个实用的案例,把该章中涉及的零散知识点串在一起进行分析总结,步骤详细,可操作性强。另外在每个章节的最后还为读者安排了大量的和本章知识点配套的自测试题(附加在光盘中),能更好地帮助读者掌握理论知识点,提高实际编程能力,寓学于练。
本书的出版距离上一版发行整三年的时间,在第1版发行后的一年就开始筹划第2版。所有实例都经过了反复的测试,每一句话都进行了反复的推敲,在这两年时间里几乎占用了笔者的全部业余时间。为《细说PHP》(第2版)筹划的几个重要事件如下:
1.根据第1版读者的反馈,在第2版中对大部分内容进行重新整理和优化。
2.用一年时间为本书重新录制了长达150小时的视频教程,全面覆盖了书中的每个知识点。
3.专门为本书开发了一个学习型的PHP框架:BroPHP,这是目前国内唯一一个学习型的专用PHP框架。并用半年时间通过了几百个项目的测试和应用,已经非常成熟和稳定。
4.书中的每个应用实例都做到了最优,直接可以应用在实际项目开发中。
5.结合多家互联网公司的项目开发资料,总结出了一份标准的项目开发流程和几个重要的标准化项目开发文档。
超强资源配套学习,跟踪服务帮助读者提高
在本书所附的DVD光盘中,附书中所有开发实例的源代码,读者在开发中可以直接使用。本书部分章节及课后习题、附录由于书的容量限制,也附加到了光盘中。光盘中还赠送配套的教学视频,共计长达150个小时(由于光盘空间有限,部分视频需要读者到兄弟连论坛:bbs.lampbrother.net下载)。通过参考本书再结合视频教学光盘,可以加快对知识点的掌握,加快学习进度。
为了帮助读者学习到更多的PHP技术,在兄弟连论坛还可以下载常用的技术手册、安装LAMP环境所需要的开源软件和本书每章后面为读者安排的大量自测题配套答案。笔者及“LAMP兄弟连”的全体讲师和技术人员也会及时回答读者提问,与读者进行在线技术交流,并为读者提供各类技术文章,帮助读者提高开发水平,解决读者在开发中遇到的疑难问题。
本书适合读者
接受PHP培训的学员
Web开发爱好者
网站维护及管理人员
初级或专业的网站开发人员
大中专院校的教师及培训中心的讲师
进行毕业设计和对PHP感兴趣的学生
从事ASP或JSP而想转向PHP开发的程序员
本书由高洛峰主笔编著,参加编写及审校工作的人员有李明、李超、李文凯、赵桐正、丛浩、闫海静、张礼军、李捷、张涛,在此一并表示感谢。
高洛峰
2012年8月
目 录
第1部分 Web开发入门篇
第1章 LAMP网站构建 2
1.1 介绍网站给你认识 2
1.1.1 Web应用的优势 3
1.1.2 Web 2.0时代的互联网 4
1.1.3 Web开发标准 5
1.1.4 认识脚本语言 6
1.1.5 了解HTTP协议 6
1.2 动态网站开发所需的Web构件 10
1.2.1 客户端浏览器 10
1.2.2 超文本标记语言HTML 12
1.2.3 层叠样式表CSS 13
1.2.4 客户端脚本编程语言JavaScript 13
1.2.5 Web服务器 14
1.2.6 服务器端编程语言 15
1.2.7 数据库管理系统 16
1.3 几种主流的Web应用程序平台 17
1.3.1 Web应用程序开发平台对比分析 17
1.3.2 动态网站开发平台技术比较 18
1.4 Web的工作原理 19
1.4.1 情景1:服务器不带应用程序服务器和
数据库 19
1.4.2 情景2:带应用程序服务器的Web服务器 20
1.4.3 情景3:浏览器访问服务器端的数据库21
1.5 LAMP网站开发组合概述 22
1.5.1 Linux操作系统22
1.5.2 Web服务器Apache 22
1.5.3 MySQL数据库管理系统 23
1.5.4 PHP后台脚本编程语言 23
1.5.5 LAMP发展趋势 25
1.6 学PHP需要学习什么内容 26
1.6.1 学PHP之前的准备 26
1.6.2 学PHP时需要了解或掌握的内容 27
1.6.3 优秀的Web程序员是怎样练成的 28
1.7 小结 29
本章必须掌握的知识点 29
本章需要了解的内容 29
第2章 HTML的设计与应用 30
2.1 网页制作概述 30
2.1.1 HTML基础 30
2.1.2 简单HTML实例制作 31
2.2 HTML语言的语法 32
2.2.1 HTML标签和元素 32
2.2.2 HTML语法不区分字母大小写 32
2.2.3 HTML标签属性 33
2.2.4 HTML颜色值的设置 33
2.2.5 HTML文档注释 33
2.2.6 HTML代码格式 33
2.2.7 HTML字符实体 34
2.3 HTML文件的主体结构 34
2.4 HTML文档头部元素<head> 35
2.4.1 <title>元素35
2.4.2 <base>元素 35
2.4.3 <link>元素36
2.4.4 <meta>元素 36
2.5 HTML文档主体标记 37
2.6 文字版面的编辑 37
2.6.1 格式标签 38
2.6.2 文本标签 39
2.7 创建图像和链接 41
2.7.1 插入图片 41
2.7.2 建立锚点和超链接 42
2.8 使用HTML表格 42
2.9 HTML框架结构 45
2.10 HTML表单设计47
2.11 小结 51
本章必须掌握的知识点 51
本章需要了解的内容 51
本章需要拓展的内容 51
本章的学习建议 52
第3章 层叠样式表CSS 53
3.1 CSS简介 53
3.2 CSS规则的组成 54
3.2.1 CSS注释 55
3.2.2 长度单位 56
3.2.3 颜色单位和URL值 56
3.3 在HTML文档中放置CSS的几种方式 57
3.3.1 内联样式表 57
3.3.2 嵌入一个样式表 57
3.3.3 连接到一个外部的样式表 57
3.4 CSS选择器 58
3.4.1 HTML选择器 58
3.4.2 类选择器 58
3.4.3 ID选择器 59
3.4.4 关联选择器 59
3.4.5 组合选择器 59
3.4.6 伪元素选择器 60
3.5 CSS常见的样式属性和值 60
3.5.1 字体属性 60
3.5.2 颜色属性 61
3.5.3 背景属性 61
3.5.4 文本属性 62
3.5.5 边框属性 62
3.5.6 鼠标光标属性 64
3.5.7 列表属性 64
3.5.8 综合示例 65
3.6 小结 67
本章必须掌握的知识点 67
本章需要了解的内容 67
本章需要拓展的内容 67
本章的学习建议 68
第4章 DIV+CSS网页标准化布局 69
4.1 DIV+CSS对页面布局的优势 69
4.2 “无意义”的HTML元素div和span 70
4.3 W3C盒子模型 70
4.4 和页面布局有关的CSS属性 72
4.5 盒子区块框的定位 74
4.5.1 相对定位 74
4.5.2 绝对定位 74
4.6 使用盒子模型的浮动布局 75
4.6.1 设置浮动 75
4.6.2 行框和清理 76
4.7 DIV+CSS的兼容性问题 78
4.7.1 不同浏览器解释盒子模型的差异 79
4.7.2 设置浏览器去遵循W3C标准 80
4.8 使用盒子模型设计页面布局 81
4.8.1 居中设计 81
4.8.2 设置两列浮动的布局 82
4.8.3 设置三列浮动的布局 83
4.8.4 设置多列浮动的布局 84
4.9 DIV+CSS网站首页面布局实例85
4.9.1 HTML文件的设计 85
4.9.2 CSS文件设计 87
4.10 小结 89
本章必须掌握的知识点 89
本章需要了解的内容 89
本章需要拓展的内容 89
本章的学习建议 89
第2部分 PHP基础篇
第5章 从搭建你的PHP开发环境开始 92
5.1 几种常见的PHP环境安装方式 92
5.1.1 Linux系统下源代码包方式安装环境 92
5.1.2 在Windows系统上安装Web工作环境 93
5.1.3 搭建学习型的PHP工作环境 93
5.2 环境安装对操作系统的选择 93
5.2.1 选择网站运营的操作系统 93
5.2.2 选择网站开发的操作系统 94
5.3 安装集成PHP开发环境 94
5.3.1 安装前准备 94
5.3.2 安装步骤 95
5.3.3 环境测试 96
5.4 phpMyAdmin的配置与应用 98
5.4.1 HTTP身份验证模式99
5.4.2 cookie身份验证模式 99
5.4.3 config身份验证模式100
5.5 小结 101
本章必须掌握的知识点 101
本章需要了解的内容 101
本章需要拓展的内容 101
第6章 PHP的基本语法 102
6.1 PHP在Web开发中的应用 102
6.1.1 就从认识PHP开始吧 102
6.1.2 PHP都能做什么 103
6.2 第一个PHP脚本程序 105
6.3 PHP语言标记 108
6.3.1 将PHP代码嵌入HTML中的位置 109
6.3.2 解读开始和结束标记 109
6.4 指令分隔符“分号” 111
6.5 程序注释 111
6.6 在程序中使用空白的处理 113
6.7 变量 113
6.7.1 变量的声明 114
6.7.2 变量的命名 115
6.7.3 可变变量 116
6.7.4 变量的引用赋值 116
6.8 变量的类型 117
6.8.1 类型介绍 118
6.8.2 布尔型(boolean) 118
6.8.3 整型(integer)119
6.8.4 浮点型(float或double) 120
6.8.5 字符串(String) 120
6.8.6 数组(Array) 122
6.8.7 对象(Object)123
6.8.8 资源类型(Resource) 123
6.8.9 NULL类型124
6.8.10 伪类型介绍 124
6.9 数据类型之间相互转换 125
6.9.1 自动类型转换 125
6.9.2 强制类型转换 126
6.9.3 类型转换细节 126
6.9.4 变量类型的测试函数 127
6.10 常量 128
6.10.1 常量的定义和使用 128
6.10.2 常量和变量 129
6.10.3 系统中的预定义常量 129
6.10.4 PHP中的魔术常量129
6.11 PHP中的运算符130
6.11.1 算术运算符 131
6.11.2 字符串运算符 133
6.11.3 赋值运算符 133
6.11.4 比较运算符 134
6.11.5 逻辑运算符 135
6.11.6 位运算符 136
6.11.7 其他运算符 139
6.11.8 运算符的优先级 140
6.12 表达式141
6.13 小结 142
本章必须掌握的知识点 142
本章需要了解的内容 142
本章需要拓展的内容 142
第7章 PHP的流程控制结构 143
7.1 分支结构 143
7.1.1 单一条件分支结构(if)144
7.1.2 双向条件分支结构(else从句) 145
7.1.3 多向条件分支结构(elseif子句) 145
7.1.4 多向条件分支结构(switch语句)147
7.1.5 巢状条件分支结构 148
7.1.6 条件分支结构实例应用(简单计算器) 149
7.2 循环结构 151
7.2.1 while语句 152
7.2.2 do…while循环 154
7.2.3 for语句 155
7.3 特殊的流程控制语句 157
7.3.1 break语句 157
7.3.2 continue语句 158
7.3.3 exit语句 159
7.4 小结 160
本章必须掌握的知识点 160
本章需要了解的内容 160
第8章 PHP的函数应用 161
8.1 函数的定义 161
8.2 自定义函数 162
8.2.1 函数的声明 162
8.2.2 函数的调用 164
8.2.3 函数的参数 165
8.2.4 函数的返回值 166
8.3 函数的工作原理和结构化编程 168
8.4 PHP变量的范围 168
8.4.1 局部变量 169
8.4.2 全局变量 170
8.4.3 静态变量 171
8.5 声明及应用各种形式的PHP函数 171
8.5.1 常规参数的函数 173
8.5.2 伪类型参数的函数 173
8.5.3 引用参数的函数 173
8.5.4 默认参数的函数 175
8.5.5 可变个数参数的函数 176
8.5.6 回调函数 177
8.6 递归函数 181
8.7 使用自定义函数库 182
8.8 小结 183
本章必须掌握的知识点 183
本章需要了解的内容 183
本章需要拓展的内容 183
第9章 PHP中的数组与数据结构 184
9.1 数组的分类 184
9.2 数组的定义 186
9.2.1 直接赋值的方式声明数组 186
9.2.2 使用array()语言结构新建数组 188
9.2.3 多维数组的声明 188
9.3 数组的遍历 190
9.3.1 使用for语句循环遍历数组 191
9.3.2 使用foreach语句遍历数组 193
9.3.3 联合使用list( )、each( )和while循环
遍历数组 195
9.3.4 使用数组的内部指针控制函数遍历数组 198
9.4 预定义数组 199
9.4.1 服务器变量:$_SERVER200
9.4.2 环境变量:$_ENV 200
9.4.3 URL GET变量:$_GET 200
9.4.4 HTTP POST变量:$_POST 201
9.4.5 request变量:$_REQUEST 202
9.4.6 HTTP文件上传变量:$_FILES 202
9.4.7 HTTP Cookies:$_COOKIE 202
9.4.8 Session变量:$_SESSION 203
9.4.9 Global变量:$GLOBALS 203
9.5 数组的相关处理函数 203
9.5.1 数组的键/值操作函数 203
9.5.2 统计数组元素的个数和唯一性 206
9.5.3 使用回调函数处理数组的函数 208
9.5.4 数组的排序函数 211
9.5.5 拆分、合并、分解和接合数组 215
9.5.6 数组与数据结构 218
9.5.7 其他有用的数组处理函数 220
9.6 操作PHP数组需要注意的一些细节 221
9.6.1 数组运算符号 221
9.6.2 删除数组中的元素操作 222
9.6.3 关于数组下标的注意事项 222
9.7 小结 223
本章必须掌握的知识点 223
本章需要了解的内容 223
本章需要拓展的内容 223
第10章 PHP面向对象的程序设计 224
10.1 面向对象的介绍224
10.1.1 类和对象之间的关系 225
10.1.2 面向对象的程序设计 225
10.2 如何抽象一个类226
10.2.1 类的声明 226
10.2.2 成员属性 227
10.2.3 成员方法 228
10.3 通过类实例化对象 229
10.3.1 实例化对象 229
10.3.2 对象类型在内存中的分配 230
10.3.3 对象中成员的访问 232
10.3.4 特殊的对象引用“$this” 234
10.3.5 构造方法与析构方法 235
10.4 封装性238
10.4.1 设置私有成员 239
10.4.2 私有成员的访问 240
10.4.3 __set()、__get()、__isset()和__unset()
四个方法 242
10.5 继承性247
10.5.1 类继承的应用 247
10.5.2 访问类型控制 249
10.5.3 子类中重载父类的方法 251
10.6 常见的关键字和魔术方法253
10.6.1 final关键字的应用253
10.6.2 static关键字的使用254
10.6.3 单态设计模式 255
10.6.4 const关键字 257
10.6.5 instanceof关键字 257
10.6.6 克隆对象 257
10.6.7 类中通用的方法__toString() 259
10.6.8 __call()方法的应用259
10.6.9 自动加载类 261
10.6.10 对象串行化 262
10.7 抽象类与接口 265
10.7.1 抽象类 265
10.7.2 接口技术 266
10.8 多态性的应用 268
10.9 面向对象版图形计算器 270
10.9.1 需求分析 270
10.9.2 功能设计及实现 271
10.9.3 类的组织架构 276
10.10 小结 277
本章必须掌握的知识点 277
本章需要了解的内容 278
本章需要拓展的内容 278
第11章 字符串处理 279
11.1 字符串的处理介绍 279
11.1.1 字符串的处理方式 279
11.1.2 字符串类型的特点 280
11.1.3 双引号中变量解析总结 280
11.2 常用的字符串输出函数 281
11.3 常用的字符串格式化函数284
11.3.1 去除空格和字符串填补函数 284
11.3.2 字符串大小写的转换 285
11.3.3 和HTML标签相关的字符串格式化 286
11.3.4 其他字符串格式化函数 290
11.4 字符串比较函数291
11.4.1 按字节顺序进行字符串比较 291
11.4.2 按自然排序进行字符串比较 292
11.5 小结 293
本章必须掌握的知识点 293
本章需要拓展的内容 293
第12章 正则表达式 294
12.1 正则表达式简介294
12.1.1 选择PHP正则表达式的处理函数库 294
12.2 正则表达式的语法规则 295
12.2.1 定界符 296
12.2.2 原子 296
12.2.3 元字符 298
12.2.4 模式修正符 301
12.3 与Perl兼容的正则表达式函数302
12.3.1 字符串的匹配与查找 302
12.3.2 字符串的替换 305
12.3.3 字符串的分割和连接 310
12.4 文章发布操作示例 312
12.5 小结 317
本章必须掌握的知识点 317
本章需要了解的内容 317
本章需要扩展的内容 317
第3部分 PHP常用功能模块篇
第13章 PHP的错误和异常处理 320
13.1 错误处理 320
13.1.1 错误报告级别 321
13.1.2 调整错误报告级别 321
13.1.3 使用trigger_error()函数来替代die() 323
13.1.4 自定义错误处理 323
13.1.5 写错误日志 325
13.2 异常处理 327
13.2.1 异常处理实现 328
13.2.2 扩展PHP内置的异常处理类328
13.2.3 捕获多个异常 330
13.3 小结 332
本章必须掌握的知识点 332
本章需要了解的内容 332
第14章 PHP的日期和时间 333
14.1 UNIX时间戳 333
14.1.1 将日期和时间转变成UNIX时间戳 333
14.1.2 日期的计算 335
14.2 在PHP中获取日期和时间 335
14.2.1 调用getdate()函数取得日期/时间信息335
14.2.2 日期和时间格式化输出 336
14.3 修改PHP的默认时区 337
14.4 使用微秒计算PHP脚本执行时间 338
14.5 日历类339
14.6 小结 343
本章必须掌握的知识点 343
本章需要了解的内容 343
本章需要拓展的内容 343
本章的学习建议 343
第15章 文件系统处理 344
15.1 文件系统概述 344
15.1.1 文件类型 344
15.1.2 文件的属性 345
15.2 目录的基本操作348
15.2.1 解析目录路径 348
15.2.2 遍历目录 349
15.2.3 统计目录大小 351
15.2.4 建立和删除目录 352
15.2.5 复制目录 352
15.3 文件的基本操作353
15.3.1 文件的打开与关闭 353
15.3.2 写入文件 355
15.3.3 读取文件内容 356
15.3.4 访问远程文件 358
15.3.5 移动文件指针 359
15.3.6 文件的锁定机制 360
15.3.7 文件的一些基本操作函数 363
15.4 文件的上传与下载 364
15.4.1 文件上传 364
15.4.2 处理多个文件上传 367
15.4.3 文件下载 368
15.5 设计经典的文件上传类 369
15.5.1 需求分析 369
15.5.2 程序设计 370
15.5.3 文件上传类代码实现 370
15.5.4 文件上传类的应用过程 375
15.6 小结 376
本章必须掌握的知识点 376
本章需要了解的内容 377
本章需要拓展的内容 377
本章的学习建议 377
第16章 PHP动态图像处理 378
16.1 PHP中GD库的使用378
16.1.1 画布管理 380
16.1.2 设置颜色 380
16.1.3 生成图像 381
16.1.4 绘制图像 381
16.1.5 在图像中绘制文字 383
16.2 设计经典验证码类 386
16.2.1 设计验证码类 386
16.2.2 应用验证码类的实例对象 389
16.2.3 表单中应用验证码 389
16.2.4 实例演示 390
16.3 PHP图片处理 390
16.3.1 图片背景管理 390
16.3.2 图片缩放 392
16.3.3 图片裁剪 393
16.3.4 添加图片水印 395
16.3.5 图片旋转和翻转 396
16.4 设计经典的图像处理类 398
16.4.1 需求分析 398
16.4.2 程序设计 399
16.4.3 图像处理类代码实现 399
16.4.4 图像处理类的应用过程 404
16.5 小结 406
本章必须掌握的知识点 406
本章需要了解的内容 406
本章需要拓展的内容 406
第4部分 数据库开发篇
第17章 MySQL数据库概述 408
17.1 数据库的应用 408
17.1.1 数据库在Web开发中的重要地位409
17.1.2 为什么PHP会选择MySQL作为自己
的黄金搭档 409
17.1.3 PHP和MySQL的合作方式 409
17.1.4 结构化查询语言SQL 410
17.2 MySQL数据库的常见操作 411
17.2.1 MySQL数据库的连接与关闭 411
17.2.2 创建新用户并授权 412
17.2.3 创建数据库 412
17.2.4 创建数据表 413
17.2.5 数据表内容的简单管理 414
17.3 小结 416
本章必须掌握的知识点 416
第18章 MySQL数据表的设计417
18.1 数据表(Table) 417
18.2 数据值和列类型418
18.2.1 数值类的数据列类型 418
18.2.2 字符串类数据列类型 419
18.2.3 日期和时间型数据列类型 420
18.2.4 NULL值 421
18.2.5 类型转换 421
18.3 数据字段属性 421
18.4 数据表对象管理422
18.4.1 创建表(CREATE TABLE)422
18.4.2 修改表(ALTER TABLE) 423
18.4.3 删除表(DROP TABLE) 424
18.5 数据表的类型及存储位置425
18.5.1 MyISAM数据表 425
18.5.2 InnoDB数据表 425
18.5.3 如何选择InnoDB还是MyISAM表
类型 425
18.5.4 数据表的储存位置 426
18.6 数据表的默认字符集426
18.6.1 字符集 427
18.6.2 字符集支持原理 427
18.6.3 创建数据对象时修改字符集 428
18.7 创建索引 428
18.7.1 主键索引(PRIMARY KEY) 428
18.7.2 唯一索引(UNIQUE) 429
18.7.3 常规索引(INDEX) 430
18.7.4 全文索引(FULLTEXT) 430
18.8 规范化431
18.8.1 起点 431
18.8.2 第一范式 432
18.8.3 第二范式 432
18.8.4 第三范式 434
18.8.5 规范化理论 435
18.9 数据库的设计技巧 436
18.9.1 数据库设计要求 436
18.9.2 起名字的技巧 436
18.9.3 数据库具体设计工作中的技巧 436
18.10 小结 437
本章必须掌握的知识点 437
本章需要了解的内容 437
本章需要拓展的内容 437
第19章 SQL语句设计 438
19.1 操作数据表中的数据记录(DML) 438
19.1.1 使用INSERT语句向数据表中添加
数据 438
19.1.2 使用UPDATE语句更新数据表中已
存在的数据 439
19.1.3 使用DELETE语句删除数据表中不
需要的数据记录 440
19.2 通过DQL命令查询数据表中的数据 441
19.2.1 选择特定的字段 441
19.2.2 使用AS子句为字段取别名 442
19.2.3 DISTINCT关键字的使用 442
19.2.4 在SELECT语句中使用表达式的列 443
19.2.5 使用WHERE子句按条件检索 444
19.2.6 根据空值(NULL)确定检索条件 445
19.2.7 使用BETWEEN AND进行范围比较
查询 445
19.2.8 使用IN进行范围比对查询 445
19.2.9 使用LIKE进行模糊查询 446
19.2.10 多表查询(连接查询) 446
19.2.11 嵌套查询(子查询) 449
19.2.12 使用ORDER BY对查询结果排序 449
19.2.13 使用LIMIT限定结果行数 450
19.2.14 使用统计函数 450
19.2.15 使用GROUP BY对查询结果分组 451
19.3 查询优化 452
19.4 小结 454
本章必须掌握的知识点 454
本章需要拓展的内容 454
本章的学习建议 454
第20章 PHP访问MySQL的扩展函数 455
20.1 PHP访问MySQL数据库服务器的
流程 455
20.2 在PHP脚本中连接MySQL服务器457
20.2.1 在PHP程序中选择已创建的数据库 458
20.2.2 执行SQL命令458
20.2.3 在PHP脚本中处理SELECT查询
结果集 460
20.3 设计完美分页类462
20.3.1 需求分析 462
20.3.2 程序设计 462
20.3.3 完美分页类的代码实现 463
20.3.4 分页类的应用过程 468
20.4 管理books表实例 470
20.4.1 需求分析 470
20.4.2 程序设计 471
20.5 PHP的mysqli扩展介绍 477
20.5.1 启用mysqli扩展模块 478
20.5.2 mysqli扩展接口的应用概述 479
20.6 小结 480
本章必须掌握的知识点 480
本章需要了解的内容 480
本章需要拓展的内容 480
本章的学习建议 480
第21章 数据库抽象层PDO 481
21.1 PDO所支持的数据库 481
21.2 PDO的安装 482
21.3 创建PDO对象 483
21.3.1 以多种方式调用构造方法 484
21.3.2 PDO对象中的成员方法486
21.4 使用PDO对象 487
21.4.1 调整PDO的行为属性 487
21.4.2 PDO处理PHP程序和数据库之间的
数据类型转换 487
21.4.3 PDO的错误处理模式 488
21.4.4 使用PDO执行SQL语句 489
21.5 PDO对预处理语句的支持 491
21.5.1 了解PDOStatement对象 491
21.5.2 准备语句 492
21.5.3 绑定参数 493
21.5.4 执行准备好的查询 494
21.5.5 获取数据 495
21.5.6 大数据对象的存取 499
21.6 PDO的事务处理 499
21.6.1 MySQL的事务处理 500
21.6.2 构建事务处理的应用程序 500
21.7 小结 502
本章必须掌握的知识点 502
本章需要了解的内容 502
本章需要拓展的内容 502
第5部分 PHP开发高级篇
第22章 MemCache管理与应用 504
22.1 MemCache概述 504
22.1.1 初识MemCache 504
22.1.2 MemCache在Web中的应用 505
22.2 memcached的安装及管理507
22.2.1 Linux下安装MemCache软件 507
22.2.2 Windows下安装memcached软件507
22.2.3 memcached服务器的管理 508
22.3 使用Telnet作为memcached的客户端
管理 509
22.3.1 连接memcached服务器509
22.3.2 基本的memcached客户端命令 509
22.3.3 查看当前memcached服务器的运行
状态信息 510
22.3.4 数据管理指令 510
22.4 PHP的memcached管理接口 511
22.4.1 安装PHP中的MemCache应用程序
扩展接口 512
22.4.2 MemCache应用程序扩展接口 513
22.4.3 MemCache的实例应用 518
22.5 memcached服务器的安全防护519
22.6 小结 519
本章必须掌握的知识点 519
本章需要了解的内容 520
本章需要拓展的内容 520
第23章 会话控制 521
23.1 为什么要使用会话控制 521
23.2 会话跟踪的方式522
23.3 Cookie的应用 523
23.3.1 Cookie概述 523
23.3.2 向客户端计算机中设置Cookie 524
23.3.3 在PHP脚本中读取Cookie的资料
内容 525
23.3.4 数组形态的Cookie应用525
23.3.5 删除Cookie 526
23.3.6 基于Cookie的用户登录模块526
23.4 Session的应用 528
23.4.1 Session概述 528
23.4.2 配置Session 529
23.4.3 Session的声明与使用 530
23.4.4 注册一个会话变量和读取Session531
23.4.5 注销变量与销毁Session531
23.4.6 Session的自动回收机制533
23.4.7 传递Session ID 533
23.5 一个简单的邮件系统实例536
23.5.1 为邮件系统准备数据 536
23.5.2 编码实现邮件系统 537
23.5.3 邮件系统执行说明 539
23.6 自定义Session处理方式 540
23.6.1 自定义Session的存储机制 540
23.6.2 使用数据库处理Session信息 543
23.6.3 使用memcached处理Session信息 546
23.7 小结 549
本章必须掌握的知识点 549
本章需要了解的内容 549
本章需要拓展的内容 549
第24章 PHP的模板引擎Smarty 550
24.1 什么是模板引擎550
24.2 自定义模板引擎552
24.2.1 自定义模板引擎类 552
24.2.2 使用自己的模板引擎 554
24.2.3 应用自定义模板引擎的示例分析 556
24.3 选择Smarty模板引擎 559
24.4 安装Smarty及初始化配置 560
24.4.1 安装Smarty 561
24.4.2 初始化Smarty类库的默认设置 561
24.4.3 第一个Smarty的简单示例 564
24.5 Smarty的基本应用 566
24.5.1 PHP程序员常用和Smarty相关的
操作 567
24.5.2 模板设计时美工的常用操作 568
24.6 Smarty模板设计的基本语法 569
24.6.1 模板中的注释 569
24.6.2 模板中的变量应用 569
24.6.3 模板中的函数应用 572
24.6.4 忽略Smarty解析 574
24.7 在Smarty模板中的变量应用 574
24.7.1 从配置文件中读取变量 575
24.7.2 在模板中使用保留变量 578
24.8 在Smarty模板中的变量调解器 580
24.8.1 变量调解器函数的使用方式 580
24.8.2 Smarty默认提供的变量调解器 581
24.8.3 自定义变量调解器插件 582
24.9 Smarty模板中自定义函数 585
24.9.1 为Smarty模板扩充函数插件 585
24.9.2 为Smarty模板扩充块函数插件 586
24.10 Smarty模板中的内置函数 587
24.10.1 变量声明 588
24.10.2 流程控制 589
24.10.3 声明和调用模板函数 592
24.10.4 数组遍历 593
24.10.5 Smarty提供的其他内置函数 598
24.11 Smarty的模板继承特性 599
24.11.1 使用{extends}函数实现模板继承 599
24.11.2 在子模板中覆盖父模板中的部分
内容区域 600
24.11.3 合并子模板和父模板的{block}标签
内容 601
24.12 Smarty的缓存控制 602
24.12.1 在Smarty中控制缓存 603
24.12.2 每个模板多个缓存 604
24.12.3 为缓存实例消除处理开销 605
24.12.4 清除缓存 605
24.12.5 关闭局部缓存 606
24.13 小结 606
本章必须掌握的知识点 606
本章需要了解的内容 606
本章需要拓展的内容 607
第25章 MVC模式与PHP框架 608
25.1 MVC模式在Web中的应用 608
25.1.1 MVC模式的工作原理 608
25.1.2 MVC模式的优缺点 609
25.2 PHP开发框架 610
25.2.1 什么是框架 611
25.2.2 为什么要用框架 611
25.2.3 框架和MVC设计模式的关系 612
25.2.4 比较流行的PHP框架 612
25.3 划分模块和操作614
25.3.1 为项目划分模块 614
25.3.2 为模块设置操作 615
第26章 超轻量级PHP框架BroPHP 616
26.1 BroPHP框架概述 616
26.1.1 系统特点 616
26.1.2 环境要求 617
26.1.3 BroPHP框架源码的目录结构 617
26.2 单一入口 618
26.2.1 基于BroPHP框架的单一入口编写
规则 618
26.3 部署项目应用目录 619
26.3.1 项目部署方式 620
26.3.2 URL访问622
26.4 BroPHP框架的基本设置 623
26.4.1 默认开启 623
26.4.2 配置文件 623
26.4.3 内置函数 624
26.5 声明控制器(Control) 625
26.5.1 控制器的声明(模块) 625
26.5.2 操作的声明 626
26.5.3 页面跳转 627
26.5.4 重定向 628
26.6 设计视图(View) 629
26.6.1 视图与控制器之间的交互 629
26.6.2 切换模板风格 630
26.6.3 模板文件的声明规则 630
26.6.4 display()用新用法 631
26.6.5 在模板中的几个常用变量应用 631
26.6.6 在PHP程序中定义资源位置632
26.7 应用模型(Model) 632
26.7.1 BroPHP数据库操作接口的特性 632
26.7.2 切换数据库驱动 633
26.7.3 声明和实例化Model 634
26.7.4 数据库的统一操作接口 637
26.8 自动验证 654
26.9 缓存设置 656
26.9.1 基于memcached缓存设置 656
26.9.2 基于Smarty的缓存机制 657
26.10 调试模式 658
26.11 内置扩展类库 659
26.11.1 分页类Page 659
26.11.2 验证码类Vcode 660
26.11.3 图像处理类Image661
26.11.4 文件上传类FileUpload662
26.12 自定义功能扩展 664
26.12.1 自定义扩展类库 664
26.12.2 自定义扩展函数库 664
26.13 小结 664
本章必须掌握的知识点 664
本章需要了解的内容 665
第6部分 项目开发篇
第27章 B/S结构软件开发流程 668
27.1 软件开发过程的划分668
27.2 需求开发 669
27.2.1 需求分析流程 670
27.2.2 需求分析说明 670
27.2.3 输出 671
27.3 系统设计 671
27.3.1 系统设计流程 672
27.3.2 系统设计说明 672
27.4 编码测试 674
27.4.1 编码与测试流程 675
27.4.2 编码说明 675
27.4.3 结果测试说明 676
27.5 试运行678
27.5.1 软件试运行流程 678
27.5.2 软件试运行说明 679
27.6 实施 679
27.6.1 软件实施流程 680
27.6.2 软件实施说明 680
27.7 验收 681
27.7.1 软件验收流程 681
27.7.2 软件验收说明 682
27.7.3 验收标准 683
27.8 服务与维护683
27.8.1 责任人 683
27.8.2 收集信息 683
27.8.3 维护分析 684
27.8.4 软件维护 684
27.8.5 改进 684
27.8.6 输出 684
27.9 项目管理 684
27.9.1 软件项目的计划 685
27.9.2 软件项目的组织 687
27.9.3 项目小组组织形式 687
27.10 项目参考 688
第28章 需求分析说明书 689
28.1 文档介绍 689
28.1.1 编写说明 690
28.1.2 项目背景 690
28.1.3 读者对象 690
28.1.4 参考资料 690
28.1.5 术语与缩写解释 691
28.2 任务概述 691
28.2.1 产品的描述 691
28.2.2 系统目标 692
28.2.3 系统功能结构 692
28.2.4 系统流程图 692
28.3 业务描述 694
28.3.1 后台登录管理 694
28.3.2 后台操作界面管理 695
28.3.3 常规管理 698
28.3.4 公告管理 700
28.3.5 友情链接管理 702
28.3.6 相册管理 705
28.3.7 图片管理 708
28.3.8 栏目管理 710
28.3.9 文章管理 713
28.3.10 幻灯片管理 716
28.3.11 用户组管理 719
28.3.12 用户管理 721
28.3.13 前台首页管理 724
28.3.14 栏目列表管理 725
28.3.15 文章内容管理 727
28.3.16 文章搜索管理 728
28.3.17 登录注册管理 730
28.3.18 个人空间管理 731
28.3.19 消息管理 736
28.3.20 动态管理 739
28.4 系统运行环境 743
28.4.1 硬件环境 743
28.4.2 软件环境 743
28.5 需求设计评审 744
第29章 数据库设计说明书 745
29.1 引言 745
29.1.1 编写目的 746
29.1.2 背景 746
29.1.3 定义 746
29.1.4 参考资料 746
29.2 外部设计 746
29.2.1 标识符和状态 747
29.2.2 使用它的程序 747
29.2.3 约定 747
29.2.4 支持软件 747
29.3 结构设计 748
29.4 逻辑结构设计 754
29.4.1 ER图向关系模型的转化 754
29.4.2 确定关系模式 754
29.4.3 消除冗余 755
29.5 物理结构设计 755
29.5.1 设计数据表结构 755
29.5.2 创建数据表 760
29.5.3 数据表记录的输入 764
29.6 安全保密设计 764
29.6.1 完整性 764
29.6.2 数据库设计的其他问题 765
第30章 程序设计说明书 766
30.1 引言 766
30.1.1 编写目的 766
30.1.2 背景 767
30.1.3 定义 767
30.1.4 使用技术 767
30.1.5 参考资料 767
30.2 系统的结构767
30.2.1 项目的目录结构 768
30.2.2 模块结构 768
30.2.3 程序结构 769
30.3 用户管理模块设计说明 774
30.3.1 功能 774
30.3.2 流程逻辑 774
30.3.3 接口 775
30.3.4 存储分配 775
30.3.5 注释设计 775
30.3.6 限制条件 775
30.3.7 测试计划 776
30.3.8 尚未解决的问题 776
30.3.9 获取添加用户的界面操作add() 776
30.3.10 用户数据入库的操作insert() 777
30.3.11 查询用户列表操作index() 778
30.3.12 获取修改用户的界面操作mod()779
30.3.13 用户数据修改的操作update() 780
30.3.14 删除用户操作del() 781
附 录
附录A 编码规范784
A.1 绪论 784
A.1.1 适用范围 784
A.1.2 目标 784
A.1.3 开发工具 785
A.2 PHP的文件格式 785
A.2.1 PHP开始和结束标记 785
A.2.2 注释规范 786
A.2.3 空行和空白 786
A.2.4 字符串的使用 787
A.2.5 命名原则 788
A.2.6 语言结构 791
A.2.7 其他规范细节 793
A.3 MySQL设计规范 794
A.3.1 数据表的设计 794
A.3.2 索引设计原则 795
A.3.3 SQL语句设计 796
A.4 模板设计 796
附录B PHP的安全和优化 798
B.1 网站安全Security 798
B.1.1 安全配置PHP 799
B.1.2 隐藏配置细节 802
B.1.3 隐藏敏感数据 803
B.1.4 清理用户数据 804
B.1.5 数据加密 806
B.2 网站优化Optimize 807
B.2.1 PHP脚本级优化 807
B.2.2 使用代码优化工具 809
B.2.3 缓存加速 810
B.2.4 HTTP加速810
B.2.5 启用GZIP内容压缩810
附录C、附录D见本书光盘