本书是目前为止最全面的关于PHP与MySQL开发技术的书籍之一,系统而全面地讲解了PHP与MySQL技术的方方面面,适合初中级的PHP程序员系统地学习;本书也是目前为止首本系统而深入地讲解UCenter、Discuz!、UCHome、ShopNC、PHPCMS等PHP产品的二次开发技术的著作,适合有一定开发经验、需要学习PHP二次开发技术的中高级程序员。
PHP与MySQL权威指南
吴津津 田睿 李云 刘昊 著
封面:
不仅系统阐述了PHP与MySQL开发必须掌握的所有理论知识,而且以项目实践的方式详细讲解了UCenter、Discuz!、UCHome、ShopNC、PHPCMS等重要PHP产品的二次开发技术
PHPChina官方出品,Discuz!创始人戴志康、UCHome创始人李国德、ThinkPHP创始人刘晨、PHPCMS项目负责人王参加等联袂推荐,权威性毋庸置疑
封底:
本书不仅对PHP与MySQL开发的理论知识进行了全面而系统的介绍,而且非常重视实际案例对读者的作用。此外,与所有同类书不同的是,本书讲解了目前国内最为普及的Discuz!、UChome、ShopNC等PHP产品的二次开发技术,很多内容都由官方提供,是非常难得的学习资料。值得推荐!
—— 李国德 UCHome创始人
PHPChina是Zend在大中华区唯一授权的官方机构,为国内培养了大量优秀的PHP人才,培训经验丰富。作为ThinkPHP的创始人,我深感PHPChina的培训功底深厚,把ThinkPHP分析得十分透彻。市面上大多数PHP的书都偏重基础,不够系统化,也不够深入,所以很多PHP程序员只是在入门的时候才看书,入门后就很少看书了。我之所以推荐此书,是因为它不仅讲基础,而且注重编程思想和实践,书中大篇幅的对最新的PHP开源产品的二次开发的讲解就是最好的例证。作为一个PHP程序员,要入门很容易,但要形成自己的编程思想和设计理念是需要不断积累的,或许本书能给你一些启发。
—— 刘晨 上海顶想科技CEO兼ThinkPHP创始人
一本好书就是一位好老师,正所谓“名师出高徒”,书的好坏将直接影响数以万计的读者。在互联网快速发展的今天,PHP技术凭借其高效、快速、稳定的特性让无数PHP技术人员得以实现自己的梦想。本书从实际项目出发,详细介绍了PHP项目开发过程中所需的各种知识和技巧。无论你是新手还是牛人,如果能学习和理解书中的所有内容,你都将受益匪浅。相信本书能成为PHP程序员的良师益友!
—— 王参加 盛大创新院资深程序员&PHPCMS项目负责人
前:
绝大多数PHP程序员都是通过自学来了解和掌握PHP技术的,对于他们来说,一本好的参考书是不可缺少的。目前,市面上关于PHP的书不算少,但是能真正做到全面、系统、翔实的书却不多。鉴于此,本书在这些方面做了一些努力和尝试,前3个部分根据初中级PHP程序员的水平和学习需求,全面、系统、翔实地讲解了PHP与MySQL开发的方方面面。此外,对于有一定开发经验的中高级PHP程序员来说,在UCenter、Discuz!、UCHome、ShopNC、PHPCMS等重要的PHP产品的基础上进行二次开发是必备的技能之一,然而这方面的参考资料极少。鉴于此,本书开PHP类图书的先河,第四部分对PHP的二次开发技术进行了全面而深入的讲解。作
从1994年诞生到至今,PHP已经有17个年头,一开始并不被大家熟知,现在已成为最热门的Web开发技术之一。它因为具有简单高效、开源免费、跨平台等特性而受到广大Web开发人员的欢迎,被近4000万个网站所采用,其中不乏Yahoo!、Google、百度、新浪、腾讯、阿里巴巴等国内外知名的互联网企业。PHP成功入选全球5大最受欢迎的编程语言,并且是入选的唯一脚本语言。国内80%以上的动态网站都在使用PHP进行相关开发,Alexa TOP500中国网站的排名中有394家使用了PHP技术,比例为78.8%。PHP至今仍然位居互联网应用之首,涉及互联网的各个应用领域,包括社区BBS、SNS、CMS、电子商城、团购,以及现在非常火热的微博应用平台等,它的身影无处不在。
互联网具有发展快、不断创新的特点,这决定了只有以尽可能快的开发速度和尽可能低的成本才能取胜。与其他同类编程语言相比较,PHP具有开发速度快、运行效率高、安全性好、可扩展性强、开源等特点。随着Web 2.0的进一步发展和SNS的兴起,以及云计算和物联网等新技术的出现,将不断催生出新的产业和服务来。支撑这些新型产业和服务的技术体系非PHP莫属。随着3G和移动互联网技术的兴起,越来越多的Web应用也选择了PHP作为主流的技术方案。PHP现在可与Java等主流编程语言相抗衡,越来越多的公司在为站点提供更加强大的功能时都采用了PHP。PHP的语法独特,混合了C、Java、Perl的语法特性,同时还有自创的新语法,它可以比CGI或Perl更快速地执行动态网页。在未来3年内,据预测,PHP的从业人数将增加42%,远超Java的13%和.NET的24%,PHP开发人员的待遇也“水涨船高”。
写作本书的目的
一本好的程序设计类图书应该不只是纯粹地讲述理论,而应该注重实践。在写书的过程中,我们一直都以实用性为目标,努力让所写的内容落到实处。以本书的篇幅来看,很明显,我们在竭尽所能地展现这种实用性。因此,如果你希望获得PHP语言和MySQL数据库的实践经验,对它们有全面的了解,并且想知道如何结合这些卓越的技术创建数据库驱动的动态Web应用,那么本书正是你所需要的。
目前互联网领域的主要应用有社区BBS、SNS社交网络、网上商城、CMS内容管理系统等,针对这些应用,国内已经发布了许多相关的PHP产品,例如:在社区BBS领域中,康盛创想旗下的Discuz!是全球范围内用户量最大、覆盖面最广的社区软件平台,拥有超过140万家的网站用户,是中小网站首选的社区与网站建设平台;在SNS社交网络领域中,UCHome自问世以来就备受瞩目,其在SNS建站平台领域中也是市场份额最大的产品;在网上商城领域,ShopNC是国内网上商城的代表产品,包括单用户和多用户两个版本;在CMS内容管理系统领域,PHPCMS 得到了近10万网站的认可,且在大中型商业网站中应用得越来越多。正是由于这些产品被大家广泛使用,为了解决广大建站者在使用过程中的疑惑,避免产生“闭门造车”的困局,所以我们决定出一本介绍这些产品的功能和结构及如何在它们的基础上进行二次开发的书籍。
本书的内容及特色
全书一共25章和5个附录,一共分为五大部分:准备篇详细介绍了Apache的使用方法和基本原理,以及PHP与MySQL开发环境的搭建;PHP篇全面讲解了PHP的语法知识和工作原理;MySQL篇系统地讲解了MySQL数据库的基本操作,以及开发与管理的方法;二次开发实战篇以实战案例的方式详细讲解了UCenter、Discuz!、UCHome、ShopNC、PHPCMS等各种产品的使用方法及其二次开发技术;附录是UCenter、Discuz!、UCHome、ShopNC、PHPCMS等产品的数据字典,可供开发者查阅。与市场上已经有的所有同类书相比较,本书的内容可能是最全面的,几乎应有尽有。
前三部分的内容能帮助完全没有开发经验的读者完全掌握PHP开发的必备知识,进入PHP开发的世界,第四部分则能帮助有经验的读者解决他们在进行二次开发时遇到的各种难题。大家知道,对编程而言,最重要的既不是代码,也不是功能,而是编程思想,本书不仅仅是一本讲解PHP技术的图书,更是一本鼓励和引导读者超越代码层面,对整个站点的“设计”进行思考的书。
本书面向的读者
本书适合的读者对象如下:
q 中初级的PHP开发工程师
q 对UCenter、Discuz!、UCHome、ShopNC、PHPCMS等产品进行二次开发的高级PHP开发工程师
q PHP网站的设计、制作及维护人员
q 大中专院校的在校学生以及社会培训班的学员
如何阅读本书
如果你是初学PHP,完全没有PHP基础或没有系统掌握PHP的基础知识,强烈建议你从第1章开始阅读,按照本书的内容安排循序渐进地进行学习,这对系统掌握PHP技术十分有好处。如果你已经有一定的PHP基础和开发经验,但是MySQL还不曾系统地学习过,那么建议直接学习本书第三部分关于MySQL的内容;如果你已经有比较好的PHP技术基础,想从事目前互联网领域的各个主流开源产品的二次开发,可以仔细阅读本书第四部分。总之,我们根据不同水平层次的读者对本书的内容进行了合理地划分,以便能让各种读者的需求都能得到满足,有针对性地阅读自己需要或感兴趣的内容。
最后,真诚地期望大家通过本书来探索PHP。无论是刚入门的PHP新手,还是有多年开发经验的专家,相信你们在看完本书之后都会有所收获。当然,一个真正的程序员,他的思想必须是超越具体语言和工具的,期待有一天,大家可以在了解书中这些知识的基础上,总结出属于自己的更加优秀的开发框架,甚至是设计思想,开发出广受用户欢迎的优秀站点。
补充参考资料
网上有许多关于PHP开源产品的参考信息,以下这些网站有丰富的相关资源:
q PHPChina开源社区:http://www.phpchina.com/
q Zend官网:http://www.zend.com/
q 康盛官网:http://www.comsenz.com/
q ShopNC官网:http://www.shopnc.net/
q PHPCMS官网:http://www.phpcms.com/
致谢
本书由PHPChina开源社区的资深会员共同编写,其中PHP基础与商城部分主要由ShopNC创始人吴津津编写;Discuz!、UCenter部分主要由田睿编写;UCHome部分主要由李云编写;Zend产品部分主要由刘昊编写;其他参与编写的有王参加、侯宝剑等。此外,本书在编写过程中还参阅了大量国内外的文献和资料。
首先要特别感谢康盛新创CEO戴志康(大C)先生,以及Discuz!团队和PHPCMS团队的大力支持!在编写过程中,PHPChina技术部和该领域的一些专家都给予了非常好的指导意见,在此表示感谢。此外,还要感谢活跃在PHP开源社区PHPChina论坛上的会员和PHP爱好者们。由于作者水平有限,编写时间也很仓促,书中难免会有一些疏漏或错误,恳请大家批评指正。如果大家有任何问题、意见或建议,可在PHPChina官方论坛(http://bbs.phpchina.com/)本书的专属版块中与作者交流。
PHPChina开源社区(www.phpchina.com)
2011年8月
计算机\程序设计
吴津津 田睿 李云 刘昊 著:暂无简介
从2001年开发Discuz!起,我就和PHP结下了深厚的感情。经过10年的发展,PHP已经从青涩走向了成熟,从小众变得普及。在技术演进的过程中,一批批优秀的工程师和产品相继诞生,众多公司采用PHP进行大规模的互联网应用开发,其中不乏Facebook、腾讯、Yahoo!这样的超大型公司。作为一名PHP开发者,我深知学习一门技术时,从无知到略知、从略知到精通的过程是如何的艰辛和漫长;而作为一名企业管理者,我更是对不断寻找和培养优秀的PHP工程师有着极为强烈的刚性需求。
然而,在PHP大行其道之时,我们也看到很多问题。不少PHP程序员处于散兵游勇的状态,其中,有些程序员没有经过系统的学习,虽然也能写出有效的应用,但基础、经验和技能全面性等方面的缺失阻碍了他们的进一步提高。不少程序员用冗长的代码和结构实现着一个原本简单而清晰的流程,也有程序员在开发应用的过程中使用勉强合格的PHP代码,既降低了整个行业的质量水准,也给新程序员造成了混淆和误解。在高级PHP程序员奇缺的市场现状下,一些大型企业甚至不惜成本招聘高级C程序员,然后对其进行PHP培训,以这种方式来满足其对高级PHP技术人才的渴求。
为此,作为PHP语言的使用者和获益者,我愿意不遗余力地支持PHP在中国的应用和发展。PHPChina作为一个普及、应用和推广PHP的根据地,几年来已经培养出了数千位优秀的PHP开发工程师,如今他们遍布在国内的各个互联网公司。
PHP弘扬的是一种开放和协作的精神,在这种精神的指引下,我们写作了本书,希望本书能帮助开发者切实提高编码水平,成就更多的高级PHP技术人才,让他们可以打造出更有竞争力、符合中国用户使用习惯的互联网产品来。
康盛新创CEO/Discuz!创始人 戴志康(Kevin Day)
2011年7月
推荐序
作者简介
前言
第一部分 准 备 篇
第1章 Apache基础 / 2
1.1 Apache介绍 / 2
1.1.1 Apache工作原理 / 2
1.1.2 Apache的特点 / 2
1.2 Windows下Apache的部署 / 3
1.2.1 Windows下Apache的安装和配置 / 3
1.2.2 启动、停止和重新启动Apache服务 / 6
1.2.3 Apache支持PHP语言 / 8
1.3 httpd.conf深入剖析 / 10
1.3.1 站点的基本配置 / 10
1.3.2 服务器优化配置 / 10
1.3.3 HTTP响应头的信息配置 / 11
1.3.4 持久性连接配置 / 12
1.4 日志记录 / 12
1.4.1 日志的配置 / 12
1.4.2 错误日志 / 14
1.4.3 访问日志 / 14
1.5 虚拟主机 / 16
1.5.1 基于主机名的虚拟主机 / 16
1.5.2 基于IP地址的虚拟主机 / 18
1.6 URL重写 / 18
1.6.1 mod_rewrite模块 / 18
1.6.2 常用指令 / 19
1.7 实战案例 / 25
1.7.1 防止图片盗链 / 25
1.7.2 Apache伪静态 / 25
1.7.3 用户访问权限设置 / 26
1.8 小结 / 28
第2章 PHP与MySQL开发环境的搭建 / 29
2.1 在Windows上安装IIS / 29
2.2 PHP的安装和配置 / 30
2.2.1 在Windows下的安装和配置 / 30
2.2.2 在Linux下的安装和配置 / 34
2.3 MySQL的安装和配置 / 37
2.3.1 Windows下的安装和配置 / 37
2.3.2 Linux下的安装和配置 / 40
2.4 PHP与MySQL连接 / 41
2.5 小结 / 43
第二部分 PHP篇
第3章 PHP基础 / 46
3.1 PHP的工作原理 / 46
3.2 PHP的版本变迁 / 46
3.3 PHP的特性 / 47
3.4 PHP的应用范围 / 48
3.5 PHP的基本语法 / 48
3.5.1 PHP 标记 / 48
3.5.2 PHP 中的注释 / 48
3.5.3 编写你的第一个PHP应用 / 49
3.6 PHP中的变量与常量 / 49
3.6.1 变量 / 49
3.6.2 常量 / 52
3.7 表达式 / 53
3.7.1 表达式分类 / 53
3.7.2 表达式的应用 / 54
3.7.3 操作数 / 55
3.7.4 操作符 / 55
3.8 PHP中的数据类型 / 56
3.8.1 布尔型 / 56
3.8.2 整型 / 56
3.8.3 字符串 / 56
3.8.4 数组 / 57
3.8.5 对象 / 58
3.8.6 其他类型 / 58
3.9 强制类型转换 / 59
3.9.1 显式和隐式强制类型转换 / 59
3.9.2 有用的强制类型转换函数 / 59
3.10 PHP的语句 / 59
3.10.1 循环语句 / 59
3.10.2 条件判断语句 / 61
3.11 小结 / 62
第4章 字符串和正则表达式 / 63
4.1 什么是字符串 / 63
4.2 定义一个字符串 / 63
4.2.1 使用单引号 / 63
4.2.2 使用双引号 / 63
4.2.3 使用定界符 / 64
4.3 获取字符串 / 65
4.4 拼接字符串 / 66
4.5 字符串的格式化 / 66
4.6 修改字母大小写 / 68
4.7 计算字符串长度和字符数目 / 68
4.8 字符串查找函数 / 70
4.8.1 字符串的查找 / 70
4.8.2 取得字符串的位置 / 71
4.9 字符串的复制和替换 / 71
4.9.1 字符串的复制 / 72
4.9.2 字符串的替换 / 72
4.10 字符串的比较 / 72
4.11 正则表达式的概念和语法 / 73
4.11.1 基本模式匹配 / 73
4.11.2 字符集 / 74
4.11.3 重复 / 75
4.12 使用正则表达式查找子字符串 / 76
4.13 使用正则表达式分割字符串 / 76
4.14 小结 / 77
第5章 数组 / 78
5.1 数组的基本概念 / 78
5.1.1 什么是数组 / 78
5.1.2 数组操作符 / 78
5.2 数字索引数组 / 79
5.2.1 数字索引数组的初始化 / 79
5.2.2 访问数组的内容 / 79
5.2.3 使用循环访问数组 / 80
5.3 数组的创建和添加 / 81
5.3.1 创建数组 / 81
5.3.2 添加数组 / 81
5.4 数组元素的添加和删除 / 82
5.4.1 在数组头添加元素 / 82
5.4.2 在数组尾添加元素 / 82
5.4.3 从数组头删除元素 / 83
5.4.4 从数组尾删除元素 / 83
5.5 数组的遍历 / 84
5.6 字符串与数组之间的转换 / 85
5.7 多维数组 / 85
5.8 数组的排序 / 86
5.8.1 sort()和rsort() / 86
5.8.2 asort()和arsort() / 87
5.8.3 ksort()和krsort() / 87
5.8.4 随机排序函数shuffle() / 87
5.8.5 多维数组的排序 / 87
5.9 数组判断函数 / 88
5.10 数组的合并与拆分 / 89
5.10.1 合并函数array_merge() / 89
5.10.2 合并函数array_combine() / 90
5.10.3 拆分函数 array_chunk() / 90
5.10.4 返回数组交集的函数array_intersect() / 91
5.10.5 将数组转换成标量变量 / 91
5.11 快速初始化数组 / 92
5.11.1 range()函数 / 92
5.11.2 array_fill()函数 / 92
5.12 在数组中查找值 / 93
5.13 定位数组元素 / 93
5.13.1 搜索数组 / 94
5.13.2 获取数组键 / 94
5.13.3 获取数组值 / 95
5.14 小结 / 95
第6章 PHP对文件的操作 / 96
6.1 打开/关闭文件 / 96
6.1.1 打开文件 / 96
6.1.2 关闭文件 / 97
6.2 读取文件 / 97
6.2.1 fread()和file()函数 / 97
6.2.2 fpassthru()函数 / 98
6.2.3 fgets()和fgetss()函数 / 98
6.2.4 fgetcsv()函数 / 99
6.3 写入文件 / 99
6.4 方便的文件处理函数 / 100
6.5 其他文件处理函数 / 101
6.6 移动文件指针小案例 / 102
6.7 文件锁定 / 102
6.8 小结 / 103
第7章 PHP函数与代码的重用性 / 104
7.1 定义和调用函数 / 104
7.2 参数 / 105
7.2.1 按值传递 / 106
7.2.2 按引用传递 / 107
7.2.3 默认参数值 / 107
7.3 函数内的变量范围 / 108
7.3.1 局部变量 / 108
7.3.2 静态变量 / 108
7.3.3 全局变量 / 109
7.4 函数的作用域和可用性 / 110
7.5 用变量存储函数的名称 / 111
7.6 递归函数 / 112
7.7 使用和包含文件 / 113
7.7.1 include与require 的应用 / 113
7.7.2 PHP模板化 / 115
7.8 小结 / 116
第8章 面向对象的程序设计 / 117
8.1 类和对象的关键概念 / 117
8.1.1 类 / 117
8.1.2 对象 / 118
8.1.3 字段 / 119
8.1.4 属性 / 120
8.1.5 常量 / 121
8.1.6 方法 / 121
8.1.7 $this关键字 / 122
8.2 构造方法和析构方法 / 122
8.2.1 构造方法 / 123
8.2.2 析构方法 / 124
8.3 静态类成员 / 125
8.3.1 静态属性 / 125
8.3.2 静态方法 / 125
8.4 对象克隆 / 126
8.4.1 clone一个对象 / 126
8.4.2 _clone()方法 / 127
8.5 继承 / 127
8.5.1 如何继承一个类 / 127
8.5.2 使用parent::关键字 / 128
8.5.3 instanceof关键字 / 129
8.5.4 覆盖父类的方法 / 129
8.6 多态 / 130
8.7 抽象类和接口 / 132
8.7.1 抽象类 / 132
8.7.2 接口 / 132
8.7.3 抽象类与接口的区别 / 134
8.8 命名空间 / 134
8.9 PHP5中的特殊方法 / 137
8.9.1 __toString() / 137
8.9.2 __autoload() / 138
8.9.3 __get()方法和__set()方法 / 138
8.9.4 __call / 139
8.10 小结 / 139
第9章 PHP的错误、异常处理和调试 / 140
9.1 常见的错误类型 / 140
9.1.1 语法错误 / 140
9.1.2 逻辑错误 / 140
9.1.3 未定义错误 / 141
9.1.4 环境错误 / 141
9.1.5 运行错误 / 142
9.2 错误处理机制 / 142
9.2.1 错误级别列表 / 142
9.2.2 错误处理函数 / 144
9.2.3 自定义错误页面 / 144
9.2.4 错误日志 / 145
9.3 异常处理 / 146
9.3.1 异常的基本使用 / 146
9.3.2 PHP的基本异常类 / 147
9.3.3 try、throw和catch / 147
9.3.4 创建自定义的exception类 / 148
9.3.5 多个异常 / 149
9.3.6 重新抛出异常 / 151
9.3.7 设置顶层异常处理器(Top Level Exception Handler) / 152
9.3.8 异常的规则 / 152
9.4 使用Xdebug进行调试 / 152
9.4.1 Xdebug的安装 / 153
9.4.2 Xdebug的使用 / 154
9.4.3 Xdebug的特制函数 / 155
9.5 小结 / 156
第10章 PHP与HTML的交互 / 157
10.1 PHP和Web表单 / 157
10.1.1 表单基本操作 / 157
10.1.2 表单安全性 / 159
10.1.3 常用表单数据的验证方法 / 162
10.2 通过PHP上传文件 / 164
10.2.1 PHP文件上传/资源指令 / 164
10.2.2 上传错误消息 / 164
10.2.3 PHP文件上传示例 / 165
10.3 小结 / 167
第三部分 MySQL篇
第11章 MySQL部署与基本使用 / 170
11.1 MySQL概述 / 170
11.1.1 MySQL为何如此流行 / 170
11.1.2 MySQL特性 / 171
11.2 登录与退出MySQL / 173
11.3 创建、删除数据库和用户 / 174
11.4 MySQL用户管理及权限分配 / 174
11.4.1 MySQL访问权限系统 / 175
11.4.2 设置用户权限 / 176
11.4.3 GRANT和REVOKE命令 / 177
11.5 MySQL优化 / 179
11.6 小结 / 181
第12章 数据库操作:PHP+MySQL / 182
12.1 mysql扩展 / 182
12.1.1 数据库连接 / 182
12.1.2 向数据库中插入数据 / 183
12.2 mysqli扩展 / 186
12.2.1 mysqli的面向对象和面向过程编程方式 / 186
12.2.2 预准备语句 / 189
12.2.3 多查询 / 191
12.3 数据库抽象层 / 192
12.3.1 PDO / 192
12.3.2 ADODB / 195
12.4 小结 / 200
第13章 MySQL中SQL语句的应用 / 201
13.1 SQL语句的基本应用 / 201
13.2 常数列的最大值 / 202
13.3 拥有某列最大值的行 / 202
13.4 按组排列的最大值 / 203
13.5 提取某列在组间的最大值 / 203
13.6 使用用户变量 / 203
13.7 使用AUTO_INCREMENT / 204
13.8 常用的字符串函数 / 205
13.9 常用的日期和时间函数 / 208
13.10 导入数据 / 211
13.10.1 LOAD DATA INFILE / 211
13.10.2 mysqlimport / 212
13.11 导出数据
13.11.1 SELECT INTO OUTFILE / 213
13.11.2 mysqldump / 214
13.12 小结 / 214
第14章 MySQL数据库开发 / 215
14.1 MySQL的数据列类型 / 215
14.1.1 数值类型列 / 215
14.1.2 字符串类型列 / 216
14.2 字符集支持 / 217
14.3 索引的使用 / 219
14.3.1 数据库索引 / 219
14.3.2 主要索引介绍 / 220
14.3.3 索引最佳实践 / 221
14.4 事务处理 / 222
14.4.1 非事务实现方法 / 222
14.4.2 事务实现方法 / 223
14.5 外键与数据的完整性 / 227
14.6 数据库内部语句和语法 / 234
14.6.1 ALTER DATABASE语法 / 234
14.6.2 ALTER TABLE语法 / 234
14.6.3 CREATE DATABASE语法 / 238
14.6.4 CREATE INDEX语法 / 239
14.6.5 CREATE TABLE语法 / 239
14.6.6 DROP DATABASE语法 / 243
14.6.7 DROP INDEX语法 / 244
14.6.8 DROP TABLE语法 / 244
14.6.9 RENAME TABLE语法 / 244
14.7 数据库操作语句和语法 / 245
14.7.1 DELETE语法 / 245
14.7.2 DO语法 / 246
14.7.3 HANDLER语法 / 247
14.7.4 INSERT语法 / 248
14.7.5 LOAD DATA INFILE语法 / 253
14.7.6 FIELDS分隔符 / 254
14.7.7 REPLACE语法 / 257
14.7.8 SELECT语法 / 258
14.7.9 TRUNCATE语法 / 261
14.7.10 UPDATE语法 / 262
14.7.11 EXPLAIN语法 / 263
14.8 存储过程 / 267
14.9 小结 / 268
第15章 MySQL数据管理 / 269
15.1 MySQL的分区 / 269
15.1.1 RANGE分区 / 271
15.1.2 LIST分区 / 273
15.1.3 RANGE和LIST分区的管理 / 275
15.2 MySQL的备份 / 280
15.3 MySQL的恢复 / 281
15.4 MySQL复制 / 281
15.5 小结 / 283
第16章 MySQL的存储引擎及表类型 / 284
16.1 MyISAM存储引擎 / 285
16.1.1 MyISAM启动选项 / 286
16.1.2 损坏的MyISAM表 / 287
16.1.3 未被适当关闭的表的问题 / 288
16.2 InnoDB存储引擎 / 288
16.2.1 InnoDB配置 / 289
16.2.2 InnoDB启动选项 / 293
16.2.3 创建InnoDB表空间 / 296
16.2.4 处理InnoDB初始化问题 / 297
16.2.5 备份和恢复InnoDB数据库 / 297
16.2.6 添加和删除InnoDB数据和日志文件 / 298
16.3 MERGE存储引擎 / 299
16.4 MEMORY(HEAP)存储引擎 / 302
16.5 BDB(BerkeleyDB)存储引擎 / 303
16.5.1 BDB支持的操作系统 / 303
16.5.2 BDB启动选项 / 303
16.6 EXAMPLE存储引擎 / 304
16.7 FEDERATED存储引擎 / 304
16.7.1 FEDERATED存储引擎的描述 / 304
16.7.2 如何使用FEDERATED表 / 305
16.7.3 FEDERATED存储引擎的局限性 / 306
16.8 ARCHIVE存储引擎 / 306
16.9 CSV存储引擎 / 307
16.10 BLACKHOLE存储引擎 / 307
16.11 MySQL最新版本的功能 / 308
16.12 小结 / 308
第17章 phpMyAdmin / 309
17.1 phpMyAdmin的安装与配置 / 309
17.1.1 phpMyAdmin的安装 / 309
17.1.2 phpMyAdmin的配置 / 310
17.1.3 phpMyAdmin配置完成后可能遇到的问题 / 311
17.2 phpMyAdmin的使用 / 311
17.2.1 phpMyAdmin的登录 / 311
17.2.2 phpMyAdmin基本功能介绍 / 312
17.2.3 数据库管理 / 317
17.2.4 数据表管理 / 318
17.2.5 数据记录管理 / 322
17.3 小结 / 323
第四部分 二次开发实战篇
第18章 Smarty应用 / 326
18.1 什么是模板引擎 / 328
18.2 Smarty模板引擎 / 329
18.3 Smarty的安装及初始化配置 / 330
18.3.1 安装Smarty / 331
18.3.2 初始化Smarty类库的默认设置 / 331
18.3.3 程序注释 / 333
18.3.4 简单示例 / 333
18.4 Smarty的使用步骤 / 335
18.5 变量使用 / 336
18.5.1 模板中输出PHP分配的变量 / 336
18.5.2 使用保留变量 / 338
18.6 变量调解器 / 339
18.7 模板的控制结构 / 349
18.7.1 条件选择结构:if-elseif-else / 350
18.7.2 foreach / 351
18.7.3 section / 352
18.8 Smarty缓存 / 353
18.8.1 在Smarty中控制缓存 / 354
18.8.2 每个页面使用多个缓存 / 355
18.8.3 为缓存实例消除处理开销 / 356
18.8.4 清除缓存 / 357
18.8.5 关闭局部缓存 / 358
18.9 小结 / 359
第19章 Zend 系列开发工具 / 360
19.1 Zend Core集成环境 / 360
19.1.1 Zend Core介绍 / 360
19.1.2 Zend Core的安装 / 361
19.2 Zend Optimizer优化器 / 365
19.2.1 Zend Optimizer介绍 / 365
19.2.2 Zend Optimizer的安装 / 365
19.2.3 Zend Optimizer的优化及配置 / 368
19.3 Zend Studio 开发工具 / 369
19.3.1 Zend Studio介绍 / 369
19.3.2 Zend Studio的下载与安装 / 371
19.3.3 Zend Studio功能及组件 / 374
19.3.4 Zend Studio的用户界面 / 375
19.3.5 Zend Studio项目管理 / 386
19.4 Zend Server服务器 / 393
19.4.1 Zend Server简介 / 393
19.4.2 Zend Server安装 / 395
19.5 Zend Guard安全卫士 / 397
19.5.1 Zend Guard简介 / 398
19.5.2 Zend Guard安装 / 398
19.5.3 使用Zend Guard加密文件 / 400
19.6 Zend Platform应用平台 / 406
19.6.1 Zend Platform 概述 / 406
19.6.2 Zend Platform的安装 / 407
19.7 小结 / 412
第20章 SVN版本控制及团队管理 / 413
20.1 基本概念 / 413
20.1.1 什么是版本控制 / 413
20.1.2 什么是 Subversion / 413
20.1.3 什么是版本库 / 414
20.2 SVN服务器的安装与配置 / 414
20.2.1 基于svnserve的SVN配置 / 414
20.2.2 基于Apache的SVN服务器 / 421
20.3 客户端工具TortoiseSVN / 424
20.3.1 什么是TortoiseSVN / 425
20.3.2 下载与安装TortoiseSVN / 425
20.3.3 TortoiseSVN使用 / 428
20.4 小结 / 449
第21章 UCenter开发实战 / 450
21.1 UCenter总述 / 450
21.1.1 UCenter简介 / 450
21.1.2 UCenter安装 / 452
21.1.3 使用UCenter / 458
21.2 UCenter源代码分析 / 463
21.2.1 UCenter系统架构 / 464
21.2.2 UCenter的目录结构 / 464
21.2.3 UCenter核心代码:/index.php / 465
21.2.4 UCenter核心代码:/admin.php / 468
21.3 UCenter接口原理 / 469
21.3.1 接口函数定义的程序文件/uc_client/client.php / 469
21.3.2 通知接口文件uc.php / 488
21.4 UCenter接口开发实例—读取论坛主题或帖子数量信息 / 493
21.5 小结 / 496
第22章 Discuz! 论坛开发实战 / 497
22.1 Discuz!总述 / 497
22.1.1 Discuz!简介 / 497
22.1.2 Discuz!特性 / 498
22.1.3 Discuz!安装 / 498
22.1.4 使用Discuz! / 503
22.2 Discuz!的源代码分析 / 510
22.2.1 Discuz!系统架构 / 510
22.2.2 Discuz!数据库结构 / 510
22.2.3 Discuz!的目录及文件结构 / 513
22.2.4 Discuz!核心代码:/include/common.inc.php / 514
22.2.5 Discuz!核心代码:/include/global.func.php / 533
22.2.6 Discuz!核心代码:/include/db_mysql.class.php / 538
22.2.7 Discuz!核心代码:/include/template.func.php / 540
22.2.8 Discuz!核心代码:/include/cache.func.php / 543
22.2.9 Discuz!核心代码:/admincp.php / 545
22.3 Discuz!的二次开发实例—多语言切换(一) / 548
22.3.1 改造目录结构 / 548
22.3.2 修改数据库 / 548
22.3.3 修改language()函数 / 549
22.3.4 修改template()函数 / 549
22.3.5 修改parse_template()函数 / 550
22.4 Discuz!的二次开发实例—多语言切换(二) / 551
22.4.1 插件模块概述 / 551
22.4.2 多语言切换后台管理 / 555
22.4.3 获取用户选择或系统设定的语言包信息 / 558
22.4.4 制作语言包切换菜单 / 559
22.4.5 编写插件语言包 / 561
22.5 小结 / 561
第23章 UCenter Home SNS系统开发实战 / 562
23.1 UCenter Home总述 / 562
23.1.1 UCenter Home简介 / 562
23.1.2 UCenter Home的安装 / 563
23.1.3 UCenter Home的使用 / 568
23.2 UCenter Home源代码分析 / 582
23.2.1 UCenter Home目录及文件结构 / 582
23.2.2 核心代码:/source/common.php / 583
23.2.3 核心代码:/source/function_common.php / 587
23.2.4 核心代码:/source/class_mysql.php / 594
23.2.5 核心代码: /do.php / 595
23.3 UCenter Home的内部机制 / 598
23.3.1 UCenter Home模板机制 / 598
23.3.2 UCenter Home缓存机制 / 600
23.3.3 UCenter Home登录验证机制 / 602
23.3.4 UCenter Home道具机制 / 604
23.3.5 UCenter Home任务的计划机制 / 605
23.3.6 UCenter Home动态机制 / 608
23.3.7 UCenter Home评论机制 / 611
23.3.8 UCenter Home权限机制 / 613
23.4 UCenter Home的二次开发实例—《记账本》插件 / 616
23.4.1 《记账本》代码设计 / 616
23.4.2 《记账本》插件的安装说明 / 621
23.5 小结 / 621
第24章 ShopNC多用户商城开发实战 / 622
24.1 ShopNC总述 / 622
24.1.1 ShopNC综合多用户商城系统简介 / 622
24.1.2 ShopNC的安装 / 622
24.2 ShopNC多用户商城的源代码分析 / 625
24.2.1 ShopNC多用户商城的系统特性 / 625
24.2.2 ShopNC系统结构 / 626
24.2.3 ShopNC模板引擎 / 627
24.2.4 核心模块的简要说明 / 627
24.2.5 核心模块的详细描述 / 628
24.2.6 核心模块的使用说明 / 675
24.3 ShopNC插件的开发 / 677
24.4 ShopNC支付接口 / 683
24.5 ShopNC商品页静态化 / 685
24.6 ShopNC商品图片上传 / 686
24.7 小结 / 688
第25章 PHPCMS V9内容管理系统开发实战 / 689
25.1 PHPCMS V9总述 / 689
25.1.1 PHPCMS简介 / 689
25.1.2 PHPCMS V9的新特性 / 690
25.1.3 PHPCMS V9的安装 / 694
25.2 PHPCMS源码分析 / 698
25.2.1 目录及文件结构 / 698
25.2.2 模板语法规则 / 702
25.3 PHPCMS V9二次开发介绍 / 703
25.3.1 开发接口概述 / 703
25.3.2 系统类库与函数库的调用 / 703
25.3.3 理解模块和控制器 / 704
25.3.4 二次开发的命名规范 / 704
25.3.5 二次开发的流程 / 704
25.3.6 二次开发技巧 / 705
25.4 PC标签的使用说明 / 706
25.4.1 PC标签概述 / 706
25.4.2 PC标签的语法 / 707
25.4.3 PC标签的保留参数 / 707
25.4.4 PC标签数据的显示 / 708
25.4.5 PC标签的分类 / 708
25.4.6 PC标签工具箱 / 708
25.5 PHPCMS和UCenter的整合 / 711
25.5.1 PHPSSO简介 / 711
25.5.2 PHPSSO与UCenter的整合 / 711
25.5.3 PHPSSO与UCenter整合的常见问题 / 715
25.6 PHPCMS二次开发实例—留言本 / 716
25.6.1 需求分析 / 717
25.6.2 数据库和数据表的设计 / 718
25.6.3 创建模块目录 / 718
25.6.4 创建数据模型类文件 / 719
25.6.5 开发模块控制器和函数 / 720
25.7 小结 / 736
附录A Comsenz产品开发—UCenter 1.5 数据字典 / 737
附录B Discuz! 7.0.0 数据字典 / 743
附录C UC Home 2.0数据字典 / 765
附录D ShopNC 2.0数据字典 / 793
附录E PHPCMS V9数据字典 / 812
后记 / 849