新書推薦:
《
设计中的比例密码:建筑与室内设计
》
售價:NT$
398.0
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:NT$
254.0
《
舍不得星星:全2册
》
售價:NT$
356.0
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:NT$
347.0
《
汗青堂丛书144·决战地中海
》
售價:NT$
765.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
《
知宋·宋代之科举
》
售價:NT$
454.0
編輯推薦:
W.Jason
Gilmore编著的《PHP与MySQL程序设计第4版》是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。《PHP与MySQL程序设计第4版》涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
《PHP与MySQL程序设计第4版》内容全面深入,适合各层次PHP和MySQL开发人员阅读,既是优秀的学习教程,也可用作参考手册。
內容簡介:
《PHP与MySQL程序设计第4版》是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。《PHP与MySQL程序设计第4版》涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
《PHP与MySQL程序设计第4版》内容全面深入,适合各层次PHP和MySQL开发人员阅读,既是优秀的学习教程,也可用作参考手册。
關於作者:
W. Jason Gilmore
世界知名软件技术专家,CodeMash技术大会创始人之一,MySQL全球技术大会顾问委员会成员。他曾负责Apress出版公司开源图书出版项目,开发了大量PHP和MySQL应用程序,在各大专业媒体发表了众多有影响力的技术文章,并通过以其姓名命名的W.J.
Gilmore公司为小型企业提供咨询和Web开发服务,其以往著作包括畅销书Easy PHP Websites with the
Zend Framework和Easy PayPal with
PHP。他的个人网站http:www.wjgilmore.com。
目錄 :
第1章PHP概述
1.1历史
1.1.1PHP 4
1.1.2PHP 5
1.1.3PHP 5.3
1.1.4PHP 6
1.2一般语言特性
1.2.1实用性
1.2.2强大功能
1.2.3可选择性
1.2.4成本
1.3小结
第2章环境配置
2.1安装的前提条件
2.1.1下载Apache
2.1.2下载PHP
2.1.3下载文档
2.2在Linux上安装Apache和PHP
2.3在Windows上安装Apache和PHP
2.4在Windows上安装IIS和PHP
2.5测试安装
2.6配置PHP
2.6.1在Linux上构建时配置PHP
2.6.2定制Windows构建
2.7运行时配置
2.7.1管理PHP的配置指令
2.7.2PHP的配置指令
2.8选择代码编辑器
2.8.1Adobe Dreamweaver
CS5
2.8.2Notepad++
2.8.3PDT
2.8.4Zend
Studio
2.9选择Web托管服务提供商
2.10小结
第3章PHP基础
第4章函数
第5章数组
第6章面向对象的PHP
第7章高级OOP特性
第8章错误和异常处理
第9章字符串和正则表达式
第10章处理文件和操作系统
第11章PEAR
第12章日期和时间
第13章处理HTML表单
第14章身份验证
第15章处理文件上传
第16章网络
第17章PHP和LDAP
第18章会话处理程序
第19章用Smarty模板化
第20章Web服务
第21章保护网站安全
第22章用jQuery和PHP创建AJAX增强特性
第23章构建面向全世界的网站
第24章Zend框架介绍
第25章MySQL介绍
第26章安装和配置MySQL
第27章MySQL客户端
第28章MySQL存储引擎和数据类型
第29章保护MySQL的安全
第30章结合使用PHP与MySQL
第31章PDO介绍
第32章存储例程
第33章MySQL触发器
第34章视图
第35章实用数据库查询
第36章索引和搜索
第37章事务
第38章导入和导出数据
內容試閱 :
PHP概述
从许多方面来看,PHP语言都是开源项目的典型代表,最初创建它只是为了满足某个开发人员的需要,在此之后却因日益扩大的PHP社区的需求而不断改进。作为一个刚刚涉足这个领域的开发人员,对PHP的发展历程有所了解是很重要的,因为它能帮助你体会到这种语言的优势,并从某种程度上理解PHP是如何偶然地形成其独有特性的。
而且,由于这种语言如此流行,了解不同版本之间的差别(尤其是版本4、版本5和版本6),会极大地帮助你针对自己的需求评价Web托管提供商和PHP驱动的应用程序。
为了帮助你尽快入门,这一章将介绍PHP的特性和不同版本之间的差别,你将了解到:
一个由加拿大开发人员开发的网页访问量计数器如何造就了世界上一流的脚本语言;
PHP的开发人员怎样一次次地改进这种语言,最终发布了迄今为止的最佳版本——PHP 5;
PHP 5.3如何进一步扩大PHP在企业中的应用范围;
PHP的哪些特性吸引了新手和专业程序员。
注意 PHP开发团队原来决定PHP 6和PHP
5的开发同步进行,着力为前者增加Unicode支持,并为后者增加命名空间等多项关键特性,这个决定可能有些过于“冒进”,还导致了大家产生种种困惑。2010年3月,团队决定把重心主要放在推进PHP
5上,而降低对下一个版本6的关注。尽管我相信最终PHP
6肯定会发布,但是写这本书时还是希望大家尽力构建适用于5.X系列的网站。
1.1 历史
最初的PHP要追溯到1995年,当时一位名叫Rasmus
Lerdorf的独立程序员开发了一个PerlCGI脚本,用来了解有多少访问者阅读了他的在线简历。他的脚本执行两项任务:将访问者信息记入日志,在网页显示访问者的数量。Web虽然现在已经家喻户晓,但在当时还是新兴技术,所以类似的工具以前从未有过,于是有不少人对Lerdorf的这个脚本产生了兴趣。自此,Lerdorf开始分发他的工具集,并称之为PHP(Personal
Home Page,个人主页)。
对PHP工具集的呼声很高,这促使Lerdorf继续开发这种语言。他增加了一个能把在HTML表单中输入的数据转换为符号变量的功能,从而可将数据导出到其他系统,这或许算得上是早期最突出的一次改进。为此,他选择用C而不是Perl代码来进行后续的开发。对PHP工具集的不断增补在1997年11月达到了顶峰,这时发行了PHP
2,称为“个人主页表单解释器”(PHPFI)。由于PHP不断普及,2版本中有来自全世界的程序员的大量加强和改进。
这个新PHP版本非常流行,很快就有一个核心开发团队加入到了Lerdorf的开发当中。他们保持了原先在HTML中直接加入代码的概念,重新编写了解析引擎,PHP
3就这样诞生了。到1998年6月发行版本3时,已经有5万多用户在使用PHP改进其网页。
接下来的两年中,开发继续狂热地进行着,又增加了成百上千项功能,用户数量也在飞速增长。在1999年初,Netcraft(www.netcraft.com,一个因特网研究和分析公司)公布了一个保守的估计,称用户数已经超过了100万,这说明PHP已经成为了世界上最流行的脚本语言之一。它的广泛流传甚至超出了开发人员最乐观的预期,并且很快用户开始更多地选用PHP开发功能更强大的应用程序。两位核心开发人员(Zeev
Suraski和Andi
Gutmans)开始彻底重新考虑PHP的工作方式,最终改写了PHP的解析器,即Zend脚本引擎。这些工作的最终成果被放入了PHP
4。
注解
除了领导开发Zend引擎和指导PHP语言的整体开发外,Suraski和Gutmans还共同创建了Zend技术有限公司(www.zend.com)。Zend主要提供开发、部署和管理PHP应用的产品和服务。若想了解更多关于该公司产品与服务的信息,请访问Zend网站,网上还有大量免费的学习资源。
1.1.1 PHP 4
2000年5月,新的开发工作进行大约18个月之后,PHP 4发布了。许多人都认为PHP
4的发布是这种语言在企业级开发环境下的正式亮相,这个观点也由于PHP的迅速普及得到了佐证。仅仅在发布后的几个月内,Netcraft估计就有超过360万个域安装了PHP。
PHP 4添加了以下几项对该语言的企业级改进。
改进了资源处理。可扩展性是版本3.X的主要缺点之一,这主要是因为设计者低估了这种语言,没考虑到它会被迅速用于大规模应用。最初设计时并没有打算用这种语言开发企业级网站,但后来缘于用户确实有这样的尝试,开发人员开始从这个角度重新考虑这种语言的机制。
面向对象的支持。版本4在一定程度上加入了面向对象的功能,但其实现的确不怎么样。不过,对于使用传统面向对象程序设计(OOP)语言的用户来说,这个新特性的确具有诱惑力。除了对象重载和运行时类信息,PHP还支持标准类和对象开发方法。(版本5提供了更全面的OOP实现,第6章将介绍有关的详细内容。)
内置的会话处理支持。版本3.X通过第三方包支持HTTP会话处理,而在版本4中HTTP会话处理则是内置的功能。这个特性使得开发人员可以相当高效轻松地跟踪用户活动和偏好。第18章将介绍PHP的会话处理功能。
加密。MCrypt库被引入到了默认发行包中,为用户提供了完全加密和散列加密,使用的加密算法包括Blowfish、MD5、SHA1和三重DES等。第21章将讨论PHP的加密功能。
ISAPI支持。对ISAPI的支持使用户能够将PHP与Microsoft的IIS
Web服务器结合使用。后来,Zend和Microssft通过FastCGI增强了IIS的PHP支持。第2章介绍如何在IIS和Apache
Web服务器上安装PHP。
内置COMDCOM支持。对Windows用户来说,另一个好处是PHP 4能够访问和实例化
COM对象。这项功能扩展了与Windows应用程序的互操作性。
内置Java支持。这也是PHP在互操作性方面的一大进步,版本4支持PHP应用程序绑定Java对象。
与Perl兼容的正则表达式(PCRE)库。Perl语言一直在字符串解析领域雄霸天下,占据着统治地位。开发人员知道,如果想让PHP得到广泛认可,强大的正则表达式功能非常重要。他们的做法只是集成Perl的功能,而不是重新开发,并将PCRE库的包集成在PHP的默认发行包中(版本4.2.0)。第9章将详细介绍这个重要的特性,并介绍经常引起混淆的正则表达式语法。
除了这些特性外,版本4还添加了几百项功能,大大提升了这种语言的能力。本书中,我们将讨论其中大部分功能。
在PHP语言的发展历程上,PHP
4代表着一次巨大的飞跃。这个新版本带来的新功能、强大能力和可扩展性对开发新手和老手都产生了不小的震动。但PHP开发团队并不满足于已有成果,于是不久以后就开始着手开展另一项里程碑式的任务,即推出一门主导Web脚本领域的语言:PHP
5。
1.1.2 PHP 5
版本5是PHP语言发展历程中的另一座分水岭。虽然前面的几个主要版本已经增加了许多库,但是版本5在现有的功能上又进行了许多改进,并且增加了成熟编程语言架构才有的一些特性。
极大地提高了面向对象能力。PHP的面向对象架构得到了改进,这是版本5最突出的特点。版本5增加了很多功能,如显式构造函数和析构函数、对象克隆、类抽象、变量作用域和接口等。另外,PHP在对象管理方面也有重大改进。第6章和第7章将详细介绍这些内容。
trycatch异常处理。具有讽刺意味的是,在编程语言中,设计错误处理策略本身就非常容易出错,而且很难保持一致。为了解决这个问题,版本5开始支持异常处理。在许多语言中,如C++、C#、Python和Java等,异常处理长期以来一直都是错误管理方面的中流砥柱,它为建立标准化的错误报告逻辑提供了一种绝佳的方法。这种方便的新方法将在第8章中介绍。
改进的XML和Web服务支持。自PHP
5起,XML支持开始建立在libxml2库基础上,还引入一个很新但非常有前途的扩展包来解析和处理XML,即SimpleXML。第20章将介绍SimpleXML,并介绍一些很棒的第三方Web服务扩展。
对SQLite的内置支持。由于一贯喜欢为开发人员提供众多选择,PHP中对小巧精悍的SQLite数据库服务器(www.sqlite.org)提供了支持。如果开发人员需要一些重量级数据库产品中才有的特性,但是不希望带来相应的管理开销,SQLite可提供一个方便的解决方案。本书前几版都专门用一章来介绍SQLite,不过PHP
5.1中PHP与SQLite的关系有所改变,其中使用PDO(PHP Data
Objects,PHP数据对象)扩展引入了PHP和SQLite集成,有关内容将在第31章介绍。
注解 PHP
5引入增强的面向对象功能,又一次推进了自身的发展,使得通过这门语言创建先进的框架成为可能。第24章将介绍现在最为流行的框架——Zend框架(http:framework.
zend.com)。
随着版本5的发行,PHP的流行程度又创历史新高。根据Netcraft的调查,已经有大约1900万个域安装了PHP。另外根据因特网服务咨询公司E-Soft(www.securityspace.com)的统计,PHP目前是最流行的Apache模块,所有Apache安装中几乎54%都安装有PHP。
1.1.3 PHP 5.3
尽管从正式意义上讲PHP
5.3未作为主版本发布,但这确实是版本5发布以来对PHP语言意义最重大的一次升级。这个版本涵盖了大量新特性,包括命名空间、延迟静态绑定、lambda函数和闭包以及一个新的MySQL驱动程序,另外在语法方面也做了很多补充(如NOWDOC语法),因此5.3版本是PHP发展进程中很重要的一步。通过本书的介绍,你将了解这些强大的特性。
1.1.4 PHP 6
本章前面提到过,多年来PHP的一个新的主版本PHP 6一直在与PHP
5.X同步开发,其主要目标就是为PHP增加Unicode支持。不过,2010年3月开发团队决定把重心放在5.X系列上。实际上,原先规划要为PHP
6补充的很多特性都已经集成到5.X版本中。尽管原来可以从http:snaps.php.net得到PHP
6测试版,但是写本书时好像这些版本都已经被从PHP网站撤除了。
你会发现不论是网上还是其他地方已经有大量有关PHP
6的介绍,甚至可以看到一些编程书的书名中已经包含这个未来的版本,不过我的建议是:在PHP开发团队正式发布下一个声明之前,先不要考虑这个版本。
到目前为止,这一章只讨论了PHP语言各个版本特有的特性。其实,所有版本都有一组共同的特性,正是这些特性吸引和保持了一个庞大的用户群体,发挥了非常重要的作用。下一节将介绍这些基本特性。
注解
你可能会奇怪为什么版本4、版本5、版本5.3和版本6在本章都有所提及。毕竟,最新的版本最重要,不是吗?一方面,我肯定会建议你使用最新的稳定版本,但另一方面,版本4和版本5还在广泛使用,而且不太可能很快从我们的视线中消失。因此,对各个版本的功能和限制有所认识是有好处的,特别是如果你的客户不那么热衷于紧跟PHP技术的最前沿,那么最好对较早的版本有一定的了解。
1.2 一般语言特性
每位用户使用PHP来实现关键业务应用时可能都有自己特定的原因,不过有人认为这些原因主要可以分为4类:实用性、强大功能、可选择性和成本。
1.2.1 实用性
从一开始,PHP就是以实用性为目的创建的。毕竟,Lerdorf最初的意图不是设计一门全新的语言,而只是为了解决一个没有现成解决方案的问题。此外,PHP早期的发展并非明确地希望改进语言本身,而只是要为用户增加功能。其结果就是建立了这样一门语言,用户只要了解很少的一些基本知识,就可用它构建功能强大的应用。例如,一个有用的PHP脚本可能只包含一行代码,与C不同,它不强制导入库函数。例如,下面就是一个完整的PHP脚本,其目的是以类似于September
23, 2007的格式输出当前的日期:
如果你不懂也不用担心,后面的章节会详细介绍PHP语法,此时只要知道大概意图就可以了。
PHP语言很强调紧凑性,这还反映在它能嵌套函数。例如,通过在一行代码中按特定的顺序调用函数,可以对一个值进行一系列修改。下面的例子将生成一个由5个字母或数字字符组成的字符串,如a3jh8:
$randomString = substrmd5microtime, 0, 5;
PHP是一种类型松散的语言,这意味着不需要明确地创建变量、指派类型或撤销变量,当然也没有绝对禁止做这些操作。PHP对这些情况的处理在内部进行,脚本中使用变量时PHP会动态创建变量,并使用最优推测规则自动指派变量的类型。例如,PHP认为下面的一组语句是完全合法的:
$number =
"5";
$number是个字符串
$sum = 15 + $number;
整数与字符串相加,得到一个新的整数
$sum =
"twenty"; 用字符串覆盖$sum
PHP还会在脚本结束时自动撤销变量,将资源返回给系统。从很多方面来看,由于PHP在内部处理了编程的许多管理方面的问题,开发人员能够集中精力去完成最终的目标——开发一个实用的应用程序。
1.2.2 强大功能
目前,PHP有200个可用的库,总共有1000余项功能以及成千上万的第三方扩展。也许,你知道PHP能访问数据库、处理表单信息以及动态创建页面,但你可能不知道PHP还有以下功能。
创建并处理Adobe Flash和PDF文件。
将密码与字典数据和容易破解的模式进行比较,评估密码的可猜测性。
使用POSIX和基于Perl的正则表达式库解析最复杂的字符串。
通过存储在纯文本文件、数据库或Microsoft活动目录中的登录凭证来验证用户身份。
采用多种协议通信,包括LDAP、IMAP、POP3、NNTP和DNS等。
与大量信用卡处理解决方案集成。
这还没有把PHP扩展与应用程序库(PEAR)中的功能考虑进来,其中收集了几百个易于安装的开源包,可通过任意方式来进一步扩展PHP。读者可以从第11章学习更多关于PEAR的内容。在随后的几章中,你将学习很多这样的库,以及几个PEAR包。
1.2.3 可选择性
PHP开发人员很少只局限于一种实现方案。相反,这个语言为用户提供了充分的选择。例如,考虑一下PHP对数据库的支持。PHP为25种以上的数据库产品提供了内置支持,包括Adabas
D、dBase、Empress、FilePro、FrontBase、Hyperwave、IBM
DB2、Informix、Ingres、InterBase、mSQL、Microsoft SQL
Server、MySQL、Oracle、Ovrimos、PostgreSQL、Solid、Sybase、UNIX
dbm和Velocis。此外,也可以利用抽象层功能来访问Berkeley
DB类型的数据库,还可以使用一些一般性的数据库抽象方案,其中最为流行的有PDO(www.php.netpdo)和MDB2(http:pear.php.netpackageMDB2)。最后,如果你想找一个对象关系映射(ORM)解决方案,诸如Propel(www.propelorm.org)这样的项目应当非常合适。
PHP灵活的字符串解析功能为不同水平的用户提供了选择,他们不仅能够(利用字符串处理函数)立即执行复杂的字符串操作,还可以(利用正则表达式)将有类似功能的程序(如Perl和Python)快速移植到PHP。除了大约100个字符串处理函数之外,PHP还支持基于Perl的正则表达式格式。(版本5.3及之前版本还支持基于POSIX的正则表达式,不过此后已经废弃。)
你更喜欢过程式编程语言,还是采用面向对象范型(object-oriented
paradigm)的语言?PHP对二者都提供了全面的支持。虽然PHP最初只是一种函数式语言,但开发人员很快就意识到提供流行的OOP范型的重要性,并开始实现一种可扩展的解决方案。
这里反复强调的重点是,使用PHP,我们可以充分利用目前掌握的技能,只需投入很少的时间就能很快地开始PHP开发。这种策略在整个语言中频频出现,这里提到的只是其中很少的一部分例子。
1.2.4 成本
PHP是免费的。PHP从一开始就对使用、修改和再分发没有任何限制。最近几年,满足这种开放许可限制的软件被称为开源(open-source)软件。开源软件和因特网就像面包和黄油一样密不可分。开源项目如Sendmail、Bind、Linux和Apache都在因特网的发展方面起到了非常重要的作用。虽然媒体最为追捧的是开源软件可以自由使用,但它还有另外几个同样重要的特点。
没有大多数商业产品所要求的许可限制。商业软件往往有许多许可限制,而开源软件对用户没有这些限制。虽然在许可权限上存在差异,但一般来讲,用户都能自由地修改和重新分发开源软件,还能将开源软件整合到其他产品中。
开放式开发和评审过程。虽然也曾有过一些意外事件,但开源软件在安全方面还是享有很好的声誉。这种高标准正是开放式开发和评审过程的结果。因为任何人都能自由使用源代码,所以安全漏洞和潜在的问题会很快被发现并得以修复。开源倡导者Eric
S. Raymond很好地总结了这项优点,他说:“只要有足够多双眼睛,所有的bug都将无处遁形。”
鼓励参与。开发团队不限于某个组织。任何感兴趣的人,只要具有相应的能力,都可以自由地加入到项目中。由于不对成员进行限制,这就大大增加了项目的人才储备,必然能贡献出更高质量的产品。
1.3 小结
了解PHP语言的历史是十分有用的,随着你越来越熟悉PHP并开始寻找托管服务或第三方解决方案,你会更深地理解这一点。本章我们首先回顾了PHP的历史,接下来概要介绍了版本4、版本5、版本5.3和版本6的核心特性。
第2章准备让你亲自动手来完成PHP的安装和配置过程,以及更多关于搜索Web托管服务提供商时要寻找的内容。虽然读者通常认为读这样的章节如同隔靴搔痒,但在这个过程中其实可以学到很多东西。就像专业的自行车手或者赛车手一样,程序员如果对调整和维护过程有实际经验,通常要好过那些没有这些经验的程序员,因为他们能更好地理解软件的行为和特异问题。准备好了吗?开始吧。