书海网短评:
适读人群:软件架构师、技术主管、中高级软件开发者和爱好者均适合阅读本书。PHP7挟大量的、强大的新功能和工具迅猛而来,使用这些功能和工具可以优化代码,编写出比旧PHP版本程序速度更快的程序。本书着重介绍了PHP7相关
PHP7挟大量的、强大的新功能和工具迅猛而来,使用这些功能和工具可以优化代码,编写出比旧PHP版本程序速度更快的程序。《PHP 7 编程实战》着重介绍了PHP7相关的中高级PHP编程技术。书中的所有范例程序都源于现实情况,旨在帮助PHP开发者解决经常遇到的现实问题。此外,《PHP 7 编程实战》还介绍了向下兼容性故障,并在需要修改PHP5代码的情况中提供了大量的指导意见,也介绍了*新的PHP7.X功能。学过《PHP 7 编程实战》介绍的知识后,你将拥有必备的工具和技术,从而能够为网站开发出高效的应用程序。
书中的内容
◎简明的、易于理解的介绍方式
◎精心挑选出来的*重要的任务和问题
◎细心编排的帮助高效解决问题的处理步骤
◎对问题处理思路的清晰说明
◎可用于解决实际问题的方案
Web网站的专门化和多元化发展趋势,要求网页编程语言必须满足编写出运行速度快、节省资源且具有较高安全性动态网页的需求。《PHP 7 编程实战》介绍的PHP7网页编程语言就是其中的佼佼者。《PHP 7 编程实战》由13章构成,详细介绍了PHP7的新增功能和中高级PHP技术,包括安装和配置PHP7开发环境的入门知识、PHP7的新增功能、PHP中的函数式编程功能、PHP面向对象编程功能的基础知识、使用命名空间和特性(trait)的方式、从数据库读取数据和向数据库中写入数据的方式、创建HTML表单元素的类的方式、过滤与验证数据的方式、实现SOAP和REST客户端与服务器的手段、PHP*新的国际化网页功能、遵循PSR-7编程规范编写中间件的方式、使用PHP实现高级算法(如链表、冒泡排序程序、堆栈和二分查找程序)的方式、软件设计模式、当前互联网中常见的攻击手段和相应的防护手段、加密/解密技术,以及可帮助你编写出优质代码的*佳编程习惯和调试技巧。此外,附录还介绍了PSR-7编程规范。
DougBierer拥有自己的公司(unlikelysource.com),该公司的主营业务包括咨询、PHP程序开发、网站架设和培训(主要面向ZendTechnologies和RogueWaveSoftware公司的员工)。他在O'ReillyMedia出版社出版的计算机科学著作包括LearningPHPandMySQL、LearningPHPSecurity、LearningMongoDB和LearningDoctrine。
苏宝龙,1999年毕业于辽宁石化大学计算机系,从事过计算机硬件维修、网络和网站架设等计算机专业实践工作。投身计算机图书翻译行业已有十余年,译著超过三十余部,是一位优秀的、负责任的译者。
PHP7为我们带来了大量的新功能和改进,如抽象语法树(AbstractSyntaxTree,AST)、可被捕捉的错误、标量类型提示功能、返回值数据类型声明以及大幅度的性能提升等。
PHP开发者当前面临的问题不是“我应该使用这些新功能吗”,而是“我怎样才能使用这些新功能开发出品质更好、速度更快的应用程序呢”。
对于使用PHP4开发应用程序的情景,我记忆犹新。对于PHP开发者来说,那是一段更为纯真的时光,因为可以将PHP代码和HTML代码混合在一起,而且能够将这些代码都放在一个文件中。那时候我们使用导入的函数库,而不使用框架。PHP应用程序基本上只是具有简单基本功能的桌面应用程序,而我们则想方设法把它塞到网页中。
从那以后,PHP应用程序开发经历了多次变革。AJAX、PHPUnit、composer和API-First等新兴框架相继涌现出来。
所有框架(包括上面提到的和其他许多框架)都对PHP开发者们开发应用程序的方式产生了影响。现在,如果你使用将PHP和HTML代码混合到一起的方式来编写以分页式设计模式为基础的应用程序,就会受到嘲笑。那么应该怎样开发程序呢?怎样开发新式PHP应用程序和API呢?怎样利用PHP新增的工具开发出速度更快、品质更优、健壮性更高的应用程序呢?我非常赞赏你能够想到并提出这些问题。
我的好朋友DougBierer对这些问题做出了回答。他撰写的这《PHP 7 编程实战》不是华而不实的大部头著作,不是你买来放在书架上就不会再碰一下的书。你捧在手中的这《PHP 7 编程实战》注定会成为你的参考资料库的一部分。
《PHP 7 编程实战》不仅像其他编程书籍一样介绍新增功能的理论知识,而且还会介绍使用这些新增功能解决真实问题的实践方法。你不仅可以从《PHP 7 编程实战》汲取知识,而且还能够立刻使用学到的知识解决问题。
如果只是简单使用一下PHP中的高级概念,你无须成为PHP专家。然而,如果你想要成长为一名专业的PHP开发者,就必须学习、理解和掌握这些高级概念。《PHP 7 编程实战》会帮助你在自己的专业道路上不断前进。
CalEvans
NomadPHP开发者群WorldWideHerd研究组首席指导
第1章基础知识1
本章主要内容简介1
安装PHP7的注意事项1
内置PHPWeb服务器的使用方法6
定义用于测试的MySQL数据库7
安装PHPUnit8
实现类自动加载9
扫描网站12
创建深层次的网页扫描器16
创建将PHP5代码转换为PHP7代码的代码转换器18
第2章PHP7中的高效功能25
本章主要内容简介25
了解抽象语法树26
了解语法分析中的差异30
了解foreach()处理过程中的差异32
使用PHP7中的增强功能提高性能36
遍历含有大量数据的文件40
将电子表格上传到数据库中43
递归式目录迭代器46
第3章PHP中的函数式编程功能51
本章主要内容简介51
开发函数51
提示数据类型55
设置函数返回值的数据类型60
使用迭代器64
使用生成器编写自己的迭代器73
第4章PHP中的面向对象编程功能77
本章主要内容简介77
开发类77
扩展类85
使用静态属性和方法93
使用命名空间97
定义可见性102
使用接口106
使用特性112
实现匿名类119
第5章与数据库进行交互125
本章主要内容简介125
使用PDO连接数据库125
创建OOP式的SQL语句生成器139
处理分页142
定义与数据库表匹配的实体147
将实体类的数据类型设置为与RDBMS查询操作匹配的数据类型152
在查询结果中嵌入二次查询操作160
实现jQueryDataTables插件的PHP查询164
第6章创建可伸缩的网站169
本章主要内容简介169
创建通用表单元素生成器169
创建HTMLradio元素生成器177
创建HTMLselect元素生成器181
实现表单工厂186
关联$_POST过滤器192
关联$_POST验证器206
将验证操作与表单关联起来212
第7章访问Web服务219
本章主要内容简介219
在PHP和XML之间转换219
创建简单的REST客户端223
创建简单的REST服务器234
创建简单的SOAP客户端243
创建简单的SOAP服务器247
第8章使用date/time数据类型和国际化功能253
本章主要内容简介253
在查看脚本中使用表情图示或表情符号253
转换复杂的字符256
通过浏览器数据获取用户所在地信息258
根据用户所在地使用适当的格式显示数字262
根据用户所在地处理货币数据266
根据用户所在地对日期/时间(date/time)数据类型进行格式化处理272
创建HTML式的国际化日历生成器277
创建循环事件生成器286
在不使用gettext工具集的情况下处理翻译工作294
第9章开发中间件304
本章主要内容简介304
通过中间件执行验证操作304
使用中间件实现访问控制311
使用缓存提高性能319
实现路由功能332
实现框架系统间的相互调用338
使用中间件实现跨编程语言功能347
第10章高级算法351
本章主要内容简介351
使用读取器和设置器351
实现链表358
编写冒泡排序程序363
实现堆栈366
创建实现二分查找操作的类369
实现搜索引擎373
显示多维数组和累加合计380
第11章实现多种软件设计模式388
本章主要内容简介388
创建数组至对象水合器(arraytoobjecthydrator)389
创建对象至数组水合器(objecttoarrayhydrator)391
实现策略模式393
定义映射器404
实现对象关联映射功能414
实现发布/订阅设计模式426
第12章提高网页的安全性433
本章主要内容简介433
过滤通过$_POST变量获得的数据433
验证通过$_POST变量获得的数据438
为PHP会话提供安全防护441
通过令牌提高表单的安全性448
创建具有较高安全性的密码生成器454
通过验证码为表单提供安全防护459
在不使用mcrypt加密扩展库的情况下实现加密/解密功能474
第13章最佳编程习惯、测试和调试480
本章主要内容简介480
使用特性和接口480
通用异常处理程序486
通用错误处理程序490
编写简单测试494
编写测试套件514
生成模拟测试数据517
使用session_start参数自定义会话530
附录定义PSR-7类535
本附录主要内容简介535
实现PSR-7值对象类535
开发PSR-7请求类556
定义PSR-7回应类571
译者序
互联网(internet,又称为因特网)始于20世纪60年代末的美国,最初仅用于军事和科研。1989年3月12日万维网(WorldWideWeb,无数个Web服务器和客户端的集合)在internet中诞生。大批富豪风起云涌般随之崛起,如Amazon的创始人杰夫·贝佐斯、Yahoo的创始人杨致远、百度的创始人李彦宏以及阿里巴巴的创始人马云等。人们对计算机网络的运用有了翻天覆地的变化。了解新闻不再需要买报纸、看电视,上网(即浏览网站,也就是访问Web服务器)就可以;了解百科知识(如查字典上的解释、医药信息、电子信息、机械知识甚至出行路线),上网就可以;买东西,上网就可以。上网还可以娱乐,如看电视剧、看电影、玩电子游戏。简言之,万维网已经成为人类生活必不可少的组成部分。
万维网诞生之初,Web网站的内容非常简单:文字和图片。因此对网页编程语言的要求也非常简单——能够美观地为浏览网站的用户显示出文字和图片即可。简单的HTML语言足以胜任这项工作。但随着万维网的不断发展,网站的功能也变得越来越专门化(例如专门提供娱乐的视频、游戏网站,以及专门提供网页搜索服务的网站)和多元化(例如购物网站、聚集各种爱好者的网站),各种网站的内容和功能也不断丰富。因而对网页编程语言的要求也越来越高。
当前的Web网站要求网页编程语言必须能够编写出运行速度快、节省资源且具有较高安全性的动态网页。PHP符合所有这些要求,下面是它的优点:
?PHP属于开源软件,源代码完全公开。
?开源软件是免费的,非常省钱。
?任何程序员都能非常容易地为PHP扩展附加功能。
?可跨平台,能够和很多免费的平台结合。
?PHP语法简单,非常容易上手,可快速实现从设计一个网页到编写一个Web应用程序的飞越。使用PHP,刚刚成为软件工程师甚至还不是软件工程师的人都能够提交新功能。PHP是为了快速制造新东西而生的(这是维基百科和Facebook选择PHP的原因)。
?PHP将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI程序高很多。PHP可以执行编译后代码,编译可以达到加密和优化代码的目的,使代码运行得更快。
?PHP支持十多种主流与非主流数据库,如:dBase、Informix、mSQL、MySQL、MicrosoftSQLServer、Sybase、ODBC、PostgreSQL、Oracle等。其中,PHP与MySQL是绝佳的组合,可以跨平台运行。
?目前主流技术(如WebService、AJAX、XML等)都支持PHP,因此能够满足应用需求。
?很多大型门户网站都使用PHP,如淘宝网、网易、新浪等。
?PHP提供了类和对象,实现了面向对象编程功能。
?有成熟的开发者社区支持PHP的研究和发展。
《PHP 7 编程实战》的作者DougBierer先生是一位拥有三十多年经验的资深软件开发者,他在《PHP 7 编程实战》中使用了大量的实践案例。这些范例程序既有实用性也有启迪性,深入浅出地讲解了PHP7的新增功能和中高级PHP技术。
翻译前沿计算机科学书籍的工作并不轻松,也不是单独一个人能够完成的。在此我要感谢电子工业出版社张春雨等编辑对《PHP 7 编程实战》提供的帮助。此外,苏连印、刘桂英、艾玉林、孙召景、张纪悦、张纪华、孙德林、马佳妮、尹晓婷、徐雯、郭昕、陆迎明和孙召恒等也参与了《PHP 7 编程实战》的翻译工作,在此对他们表示感谢。
因时间仓促,译者水平有限,《PHP 7 编程实战》难免有错漏之处,欢迎广大读者朋友们批评指正。
苏宝龙
推荐序
PHP7为我们带来了大量的新功能和改进,如抽象语法树(AbstractSyntaxTree,AST)、可被捕捉的错误、标量类型提示功能、返回值数据类型声明以及大幅度的性能提升等。
PHP开发者当前面临的问题不是“我应该使用这些新功能吗”,而是“我怎样才能使用这些新功能开发出品质更好、速度更快的应用程序呢”。
对于使用PHP4开发应用程序的情景,我记忆犹新。对于PHP开发者来说,那是一段更为纯真的时光,因为可以将PHP代码和HTML代码混合在一起,而且能够将这些代码都放在一个文件中。那时候我们使用导入的函数库,而不使用框架。PHP应用程序基本上只是具有简单基本功能的桌面应用程序,而我们则想方设法把它塞到网页中。
从那以后,PHP应用程序开发经历了多次变革。AJAX、PHPUnit、composer和API-First等新兴框架相继涌现出来。
所有框架(包括上面提到的和其他许多框架)都对PHP开发者们开发应用程序的方式产生了影响。现在,如果你使用将PHP和HTML代码混合到一起的方式来编写以分页式设计模式为基础的应用程序,就会受到嘲笑。那么应该怎样开发程序呢?怎样开发新式PHP应用程序和API呢?怎样利用PHP新增的工具开发出速度更快、品质更优、健壮性更高的应用程序呢?我非常赞赏你能够想到并提出这些问题。
我的好朋友DougBierer对这些问题做出了回答。他撰写的这《PHP 7 编程实战》不是华而不实的大部头著作,不是你买来放在书架上就不会再碰一下的书。你捧在手中的这《PHP 7 编程实战》注定会成为你的参考资料库的一部分。
《PHP 7 编程实战》不仅像其他编程书籍一样介绍新增功能的理论知识,而且还会介绍使用这些新增功能解决真实问题的实践方法。你不仅可以从《PHP 7 编程实战》汲取知识,而且还能够立刻使用学到的知识解决问题。
如果只是简单使用一下PHP中的高级概念,你无须成为PHP专家。然而,如果你想要成长为一名专业的PHP开发者,就必须学习、理解和掌握这些高级概念。《PHP 7 编程实战》会帮助你在自己的专业道路上不断前进。
CalEvans
NomadPHP开发者群WorldWideHerd研究组首席指导
关于作者
在1971年,DougBierer使用DartmouthBASIC(BASIC语言的原始版本)在一台DECPDP-8型计算机上编写出了自己的第一个程序,从那以后,他就再也无法与计算机分离了。经过一段体验非常丰富的职业生涯历练后,他在1978年成为了专业的合约程序员,此后他一直在使用BASIC、PL/I、汇编、FORTH、C、C++、dBase/FoxBase/Clipper、Pascal、Perl、Java和PHP语言编写应用程序。DougBierer会说四种语言,喜欢在世界各地旅游,在法国、荷兰、英格兰、瑞典、苏格兰和泰国都居住过一段时间。他曾经花数年时间从事Linux系统管理和TCP/IP网络工作。他多才多艺,喜欢音乐和小说,写过60多首歌。他有一个笔名叫作DouglasAlan。
DougBierer拥有自己的公司(unlikelysource.com),该公司的主营业务包括咨询、PHP程序开发、网站架设和培训(主要面向ZendTechnologies和RogueWaveSoftware公司的员工)。
DougBierer在https://www.lulu.com/上发表过小说TheEnd,AndThen?andFurtherIndications。他在O'ReillyMedia出版社出版的计算机科学著作包括LearningPHPandMySQL、LearningPHPSecurity、LearningMongoDB和LearningDoctrine。
首要的是,我要将这《PHP 7 编程实战》献给我的母亲BettyBierer,她在2016年5月永远离开了我们。她在我的整个生命历程中不断鼓励我,为我的每次进步欢呼鼓掌(不论这些进步多么微小)。她参加了我举办的所有音乐会、购买了我录制的所有CD,而且即便她对计算机科学毫无兴趣,也仍旧阅读了我撰写的所有书。我还要感谢能够与我同甘共苦的妻子Siri,当我因撰写《PHP 7 编程实战》而没有时间陪伴她时,她也无怨无悔(不过她也对我声明下不为例)。最后,我要感谢许多PHP社区的活跃人士,他们帮助我迸发出新式思路和灵感。这些人包括:MatthewWeirO'Phinney、CalEvans、DarylWood、SusiePollock、SalvatorePappalardo、SlaveyKaradzhov和ClarkEveretts。
关于审校者
SalvatorePappalardo是一位技术天才,在2002年成为了一名软件工程师。他喜欢“从零开始”的开发形式。他爱好广泛,除了喜欢研究计算机技术,还喜欢阅读科幻小说,观赏电影和TED演讲。
VincenzoProvenza是一位网页开发者,具有使用多种技术和编程语言(主要是PHP和JavaScript)的从业经验。他喜欢旅游和读书。
前言
PHP7以破纪录的速度席卷了开源社区,吸引了许多人的注意力。核心开发团队对这门编程语言做出了很大的改进,但仍然为该语言保留了高度的向下兼容性。这些改进几乎能够为PHP程序提高200%的速度,并能够大幅度地减少内存占用量。从开发的观点看,对命令和统一变量语法(uniformvariablesyntax)解析方式的改进引入了多种编写代码的新方式,这些方式在以前的PHP版本中是无法使用的。同时,如果开发者不了解PHP7解析命令的方式,就会掉到隐藏的陷阱中,导致程序发生故障。因此,《PHP 7 编程实战》的使命是介绍这些新的令人激动的代码编写方式,以及这些新方式与以前的PHP版本不兼容的地方。需要着重指出的一点是,《PHP 7 编程实战》既介绍PHP7.0也介绍PHP7.1。
《PHP 7 编程实战》主要内容
第1章介绍入门知识,帮助你安装和配置PHP7的开发环境。还介绍了几个代表性很强的示例程序,通过它们来展示PHP7的几个新功能。
第2章深入介绍了这门语言的新增功能,其中包括抽象语法树(AbstractSyntaxTree)和统一变量等语法,还介绍了这些新增功能是怎样对常规编程方式产生影响的。本章还通过几个示例介绍了PHP7在性能方面的提升,包括在foreach()循环中的大幅度改进。
第3章









