首页>参考读物>计算机科学与技术>软件与程序设计

深入理解PHP:高级技巧、面向对象与核心技术(原书第3版)
作者 : (美)Larry Ullman 著
译者 : 季国飞 朱佩德 译
丛书名 : Web开发技术丛书
出版日期 : 2014-01-06
ISBN : 978-7-111-45119-8
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 484
开本 : 16
原书名 : PHP Advanced and Object-Oriented Programming: Visual QuickPro Guide,Third Edition
原出版社: Pearson Education USA(Shawn)
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

前勒口
作者简介
Larry Ullman?资深Web开发技术专家,国际知名技术畅销书作家,同时他还是经验丰富的培训师、教师、演说家和顾问。他已经出版了20多本著作,被翻译为20多种文字在全球发行,还发表了大量的技术文章,深受读者欢迎。Larry最深受读者喜爱的一点在于,他往往可以将晦涩难懂的专业术语转换为大家耳熟能详的语言。
译者简介
季国飞?资深Web开发工程师,混迹互联网多年。著有《jQuery开发技术详解》,专注于Web开发技术,目前关注Web前端开发、jQuery和node.js。
个人网站:http://www.34ways.com 
Github:https://github.com/jiji262
朱佩德?网络编程达人,现于华为公司从事驱动开发工作。
封面
国际知名Web开发专家和技术畅销书作家最新力作,PHP领域经典著作
从编程技巧、面向对象和扩展三个角度系统讲解和总结了成为中高级PHP程序员应该具备的技术和技能,包含大量实用案例,极具实践指导意义
封底
如果你已经具备一定的PHP编程基础,想使开发效率更高,想把应用做得更好,那么这本书应该是你需要阅读的。本书旨在为想修炼成为高级PHP程序员的中初级PHP程序员提供实用的方法和建议。
全书从三个角度讲解了高级PHP程序员应该具备的技术和知识:
PHP和MySQL编程的高级知识和技巧,这些都是在实际开发中总结出来的,PHP程序员不易掌握,但是又必须掌握的;
面向对象的系统知识,以高级话题和生动的案例为主;
PHP技术的扩展以及与其他技术的结合使用。
新旧版本的主要差别:
大大扩展了面向对象编程的覆盖范围;
讲解了最新、最流行的编程技巧,比如单元测试和性能调优技巧;
去掉一些过时的或者在作者的其他书中已经被很好地讲述过的章节。
请访问网站(www.larryUllman.com)下载本书代码,或者访问支持论坛,从作者处直接得到解答。

图书前言

以敝人愚见,“高级PHP”指的是持续学习,即当你已经知道如何使用PHP,或许还知道MySQL等类似标准的东西时,应去扩展你的知识范围,包括如何处理不同的事情,如何改进基本的事情,以及如何与PHP结合使用其他技术。总之,你知道如何使用PHP创建一个动态网站之后,应知道如何创建一个更好的网站,这里所说的“更好”包括各个方面。
  这就是我写这本书的初衷。本书不会花精力去讨论那些晦涩难懂的PHP语言的深奥特性,也不会去重写PHP、MySQL或者Apache的源码,也没有介绍理论上很有趣但是却没有什么实用价值的代码,而是展示了典型基础知识之外但是有绝对必要(通常也很“酷”)的技巧和方法。
关于本书
  简单来说,我尽量让本书的内容对每个中级水平的PHP程序员都是可以理解和使用的。正如我在前面所提到的,“高级PHP”主要讨论的是关于扩展的主题。读者应该已经掌握了全部基础知识(或许在睡梦里也可以检索出数据查询的结果),但是希望进一步深入学习。这意味着想要学习包括面向对象编程(OOP)、使用PEAR(PHP Extension and Application Repository)、在命令行中调用PHP、获取XML知识,或者提高自己在某方面的技术水平。
  在我看来,高级PHP应该覆盖以下三个有些相关的知识领域:
  把已经会做的事情做得更好、更快和更加安全。
  学习面向对象编程。
  使用PHP和其他技术做符合标准的东西(比如网络编程、单元测试或者XML)。
  这本书可以大致分为3个部分。前面3章涵盖了通常意义上的高级PHP知识,包括编程技巧、Web应用程序开发和数据库应用。这些章节涵盖了平均水平的PHP程序员可能不太熟悉但是又应该了解的一些知识。在阅读的过程中,你也可以看到很多有用的代码。
  接下来的6章主要把精力放在面向对象编程上。这一部分占到本书大概一半的篇幅。我们将从最基础的知识开始讲解面向对象编程,然后深入到更多比较深层次的话题,最后展示一些真实生动的实例。
  最后5章都是名为类似“PHP和……”这样的章节,包括以下主题:
  与网络服务器通信
  与主机服务器通信
  使用命令行界面
  XML
  调试、测试和性能问题
  本书中使用的大部分例子都试图去适应真实的使用场景,而不像你可能在其他的书籍或者教程、手册中看到的代码那样基本没什么用处。我也同样认可代码说明一切的理念,最终,你不但可以看到示例是如何实现的,同时也可以看到如何把这些新的技巧和想法应用到你自己的项目中。
  不像我所写的其他很多书那样,你并不需要按照章节顺序来阅读本书,至少是本书中的绝大部分。个别章节可能会假设你已经事先阅读了其他的章节。例如,介绍面向对象编程的几章,就有个循序渐进的过程。一些后面的章节也会引用在前面章节中完成的示例程序。如果你先阅读了后面的章节,你需要做的只是翻到前面的章节去寻找后面章节所需要的数据库设置或者一些脚本。
  最后说明一点,我将在本书的脚本中使用HTML5取代HTML。我保证还会用到一些CSS。我不会在本书中讨论它们中的任何一个话题(当然,坦白地说,这些内容并不一定使用得十分完美)。如果你对这些话题不是很熟悉,或许你需要去找些其他的在线资源或者比较好的书籍(比如Elizabeth Castro编写的Visual QuickStart Guides)参考一下。
本版的更新
  新版中我设定了三个目标:
  大大扩展了面向对象编程的覆盖范围。
  介绍新的、最近流行的技巧,比如单元测试以及调试技巧。
  去掉一些过时的或者在我的其他书中已经全面讲述过的章节。
  到目前为止,最大的改变就是增加了对于面向对象编程的覆盖范围,增加了一些额外的材料,包括使用一章篇幅专门讲述设计模式。同样,也有一章使用面向对象思想的例子,用于取代之前的面向过程编程的代码。
  当然,本书中所有的代码和文字都已经进行过更新、编辑以及改进。换句话说,本书会使用HTML5以及更优化的CSS,或者在解释复杂的问题和实例时做些改进。
和我的其他书相比
  那些通过我的另一本书《PHP for the Web: Visual Quick-Start Guide》找到本书的读者,可能会觉得本书的内容有些超过他们的阅读范围。本书确实需要读者对PHP标准编程有个比较好的了解,特别是调试代码,但是也不意味着你将本书束之高阁。如果你发现目前的知识不足以阅读本书,你可以看看我的另一本书《PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide》(Peachpit Press, 2011)。
  如果你已经读了我上面介绍的这本书,或者之前的某一个版本,我希望你会发现本书会让你在函数库和技能方面获得不可思议的提升。
必备条件
  正如本书假设的一样,你需要先了解部分PHP编程的基础知识(当然,更重要的一点是,在出现问题的时候会调试),同时也需要读者具有其他一些条件来完成本书的学习过程。对于初学者来说,这意味着需要一台支持PHP的服务器。在本书编写时,PHP的最新版本是5.4,本书大部分代码要求使用至少是PHP 5.3版本。
  除了需要PHP以外,我们还经常需要使用一个数据库程序。本书的示例程序使用MySQL,但是在实际应用中使用任何数据库程序都是可以的。另外,为了保证书中部分章节的代码脚本可以运行(特别是最后5章),你的PHP安装环境需要有对相应技术的支持,而且要安装支持这些技术的库文件。幸运的是,PHP 5内置了很多对高级特性的支持。如果某个章节里的示例程序需要特殊的扩展支持,在章节开始的介绍里会有所提及。本书在使用PEAR或者PECL类时就属于这种情况。本书中不会讨论PHP、MySQL以及Web服务器的安装。我们假设读者已经知道,或者已经完成了这些安装操作。
  如果你有任何问题或者阅读困难,你可以在网上搜索答案,或者在我的支持论坛(www.Larry Ullman.com/forums/)里留言寻求支持。
  除了PHP以外,你还需要一些东西(可能已经有了):一个文本编辑器或者集成开发环境(IDE)、一个FTP应用程序(如果使用远程服务器)以及一个Web浏览器。本书中所有代码已经在Windows XP及Mac OS X系统上测试过,两个操作系统上的运行结果在本书中都有展示。
支持站点
  我创建了一个网站用于支持本书:www.LarryUllman.com。这个站点有以下几个功能:
  可下载本书的所有脚本。
  可下载所有的SQL命令。
  可下载所有可用的额外文件(若有必要)。
  本书勘误表。
  一个你可以从别人那里寻求帮助的论坛。
  提供一种直接联系我的途径。
  我也会发布一些与本书中涵盖内容相关的文章。
  当你使用这个站点的时候,请注意版本问题(本书的标题和版本号会随处可见)。我写的每一本书都有其独立的反馈区域,如果你去错了地方,那么下载的文件可能就和你的书中内容不吻合了。

上架指导

计算机\程序设计

封底文字

如果你已经具备一定的PHP编程基础,想使开发效率更高,想把应用做得更好,那么这本书应该是你需要阅读的。本书旨在为想修炼成为高级PHP程序员的中初级PHP程序员提供实用的方法和建议。全书从三个角度讲解了高级PHP程序员应该具备的技术和知识:
(1) PHP和MySQL编程的高级知识和技巧,这些都是在实际开发中总结出来的,PHP程序员不易掌握,但是又必须掌握的;
(2) 面向对象的系统知识,以高级话题和生动的案例为主;
(3) PHP技术的扩展以及与其他技术的结合使用。

新旧版本的主要差别:
(1)大大扩展了面向对象编程的覆盖范围;
(2)讲解了最新流行的编程技巧,比如单元测试和性能调优技巧;
(3)去掉一些过时的或者在作者的其他书中已经被很好地讲述过的章节。
请访问网站(www.larryUllman.com)下载本书代码,或者访问支持论坛,从作者处直接得到解答。

作者简介

(美)Larry Ullman 著:暂无简介

译者简介

季国飞 朱佩德 译:暂无简介

译者序

Larry Ullman是一位在业界广受赞誉的技术图书作者,他的作品涵盖Web开发(PHP、MySQL和JavaScript等)以及C/C++等,几乎每一本(每一个版本)都成为了经典。我的PHP开发历程也是从Larry Ullman的一本《PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide》开始的。
  遥记当年,互联网上的资源还不像现在这么开放,质量高的技术性文章还比较少见,因此找到一本相关技术的靠谱书籍可以说是学习一门语言或者技术的必经之路。在经历了一些拼凑书籍的折磨之后,我发现了这本书,当时顿觉如获至宝,阅读之后更是欲罢不能,犹如醍醐灌顶,之前的疑惑一个一个地得到解答,知识体系也变得清晰。
  后来,这本书又出了几个更新的版本,再次翻阅的时候,发现其实这本书讲的内容十分浅显,但是正是这些后来看来浅显的东西,能够以一种让入门者一看就懂的表述写出来,这才是最最难得的。在做技术讲座或者知识分享的时候,有时候我觉得很简单的东西,却很难用让听众可以理解的方式表达出来。读Larry Ullman的书就不存在这样的问题,我们在阅读的时候,Larry Ullman好像知道我们会在哪里有问题一样,会用很通俗易懂的方式将问题如庖丁解牛,逐一释疑,让读者感觉豁然开朗。我觉得这正是Larry Ullman的过人之处。
  所以编辑请我翻译这本书的时候,我毫不犹豫地答应了。同时我也觉得诚惶诚恐,一直在想能不能用中文将书中内容以Larry的逻辑和流畅程度呈现出来。翻译的过程略显痛苦,很多时候需要对专业术语的译法去查阅资料或参考书籍,很多时候还需要对Larry讲解知识点的思路和逻辑理解之后才动笔翻译,因此一度导致本书交稿延期。庆幸的是,现在我们终于看到了本书的付梓印刷,也希望译者的努力不会辜负了读者的期望。
  本书书名中有“高级”的字眼,但是我不希望误导你,觉得本书中都是一些晦涩难懂的高深理论,其实本书不是什么“武林秘籍”,更不会讲那些只可以炫耀却不怎么实用的偏门知识。本书中涵盖的所有内容,都会在PHP开发中经常用到,前提是你知道它的存在和如何使用它。我想这就是本书的目的了。译者的理解,本书中所说的“高级”,是相对于其他入门书籍而言的(例如我之前提到的那本)。入门书籍会着重讲解语言本身的特性,很多知识点点到为止,本书则会更加深入地讨论入门书籍没有涵盖到的内容,比如多维数组、调试和面向对象编程。
  在翻译过程中,虽然笔者努力做到精益求精,但是由于技术所限以及时间紧迫,译作中的错误和纰漏在所难免,还请读者见谅。本书中的代码和勘误表可以在这里找到:
  https://github.com/jiji262/PAOOP
  这里需要特别感谢的是机械工业出版社华章分社的编辑,及时纠正了译稿的一些低级错误;感谢小朱(朱佩德)认真完成了他所负责的章节的翻译工作,让我们可以更加顺利地完成;最后感谢我的爱人,是你在背后的默默支持,不断忍受我将陪家人的时间用于翻译,才使得这本书如期问世,谢谢。

季国飞

图书目录

译者序
前 言
第1章 高级PHP技巧 1
1.1  多维数组 1
1.1.1  多维数组排序 1
1.1.2  数据库驱动的数组 7
1.2  高级函数定义 15
1.2.1  递归函数 15
1.2.2  使用静态变量 21
1.2.3  匿名函数 24
1.3  原型文档语法 27
1.4  使用printf()和sprintf() 33
1.5  回顾和启示 37
第2章 开发Web应用程序 38
2.1  模块化一个Web网站 38
2.1.1  创建配置文件 39
2.1.2  创建HTML模板 46
2.1.3  创建索引文件 50
2.1.4  创建内容模块 54
2.1.5  创建搜索模块 56
2.2  使用mod_rewrite优化SEO 59
2.2.1  允许.htaccess重写 60
2.2.2  激活URL重写 63
2.3  调整浏览器缓存 67
2.4  回顾和启示 71
第3章 高级数据库概念 73
3.1  在数据库中保存会话 73
3.1.1  创建会话表 74
3.1.2  定义会话函数 75
3.1.3  使用新会话处理程序 82
3.2  处理美国的邮政编码 87
3.2.1  创建邮政编码表 87
3.2.2  创建stores表 90
3.2.3  计算距离 92
3.3  创建存储函数 97
3.4  水平显示结果 101
3.5  回顾和启示 106
第4章 面向对象编程基础知识 108
4.1  面向对象编程的理论 108
4.2  定义一个类 109
4.3  创建对象 113
4.4  $this属性 117
4.5  创建构造函数 124
4.6  创建析构函数 128
4.7  使用UML设计类 133
4.8  使用phpDocumentor生成更好的文档 135
4.9  回顾和启示 140
第5章 高级面向对象编程技术 142
5.1  高级理论 142
5.2  继承类 144
5.3  继承构造函数和析构函数 149
5.4  方法的重写 154
5.5  访问控制 158
5.6  使用范围解析操作符 166
5.7  创建静态成员 169
5.8  回顾和启示 177
第6章 再谈高级面向对象编程 178
6.1  抽象类和方法 178
6.2  接口 186
6.3  traits 194
6.4  类型提示 201
6.5  命名空间 206
6.6  回顾和启示 212
第7章 设计模式 214
7.1  理解设计模式 214
7.2  单例模式 216
7.3  工厂模式 221
7.4  组合模式 227
7.5  策略模式 237
7.6  回顾和启示 248
第8章 使用既有的类 250
8.1  捕获异常 250
8.2  扩展Exception类 258
8.3  使用PDO 266
8.3.1  连接数据库 266
8.3.2  捕获异常 267
8.3.3  执行简单查询 270
8.3.4  执行select查询 271
8.3.5  使用预定义语句 275
8.4  使用PHP标准库 279
8.4.1  文件处理 280
8.4.2  迭代器 283
8.4.3  数据结构 287
8.4.4  自动加载类 288
8.5  回顾与启示 291
第9章 面向对象编程实践:CMS系统示例 293
9.1  明确编程目标 293
9.2  创建数据库 295
9.3  制作网页模板 298
9.4  编写工具类文件 301
9.5  创建Error视图文件 305
9.6  定义需要的类 306
9.6.1  Page类 306
9.6.2  User类 309
9.7  创建主页 312
9.8  显示页面 317
9.9  使用HTML_QuickForm2 321
9.9.1  创建表单 322
9.9.2  过滤并验证表单数据 323
9.9.3  处理表单数据 324
9.10  注销登录 330
9.11  添加页面 332
9.12  回顾与启示 336
第10章 PHP网络编程 338
10.1  访问其他网站 338
10.2  PHP socket编程 343
10.3  使用IP进行地址查询 349
10.4  使用cURL 354
10.5  创建Web服务 358
10.5.1  Web服务介绍 358
10.5.2  返回多种类型的数据 359
10.5.3  创建简单Web服务 359
10.6  回顾与启示 363
第11章 PHP与服务器 364
11.1  文件压缩 364
11.2  创建cron任务 372
11.3  使用MCrypt 374
11.3.1  数据加密 375
11.3.2  数据解密 380
11.4  回顾与启示 383
第12章 PHP的命令行界面 385
12.1  测试安装 385
12.2  执行一段代码 389
12.3  可交互的PHP命令行界面 391
12.4  创建命令行脚本 392
12.5  运行命令行脚本 396
12.6  使用命令行参数 399
12.7  接收输入 403
12.8  内置服务器 407
12.9  回顾和启示 409
第13章 XML和PHP 411
13.1  什么是XML 411
13.2  XML语法 412
13.3  属性、空元素及实体 416
13.4  定义XML架构 419
13.4.1  包含DTD 420
13.4.2  定义元素 420
13.4.3  定义属性 421
13.4.4  使用XML架构 425
13.4.5  合并XSD 425
13.4.6  定义元素 425
13.4.7  简单类型与复杂类型 427
13.4.8  创建属性 427
13.5  XML解析 432
13.5.1  使用Expat解析XML 433
13.5.2  使用SimpleXML 440
13.6  创建RSS源 446
13.7  回顾与启示 451
第14章 PHP程序调试、测试与性能 453
14.1  调试工具 453
14.1.1  安装Xdebug 454
14.1.2  使用Xdebug 456
14.2  单元测试 459
14.2.1  安装PHPUnit 460
14.2.2  定义测试 461
14.2.3  创建测试用例 462
14.2.4  运行测试 465
14.2.5  建立测试 465
14.3  脚本运行分析 469
14.4  提高性能 471
14.5  回顾与启示 474

教学资源推荐
作者: 马玉春 李壮 张鲲 黄应红 编著
作者: (美)Mary Campione Kathy Walrath Alison Huml
参考读物推荐
作者: [美]阿尔文·亚历山大(Alvin Alexander) 著
作者: (美)Howard Kushner 等
作者: [美]詹姆斯·R.佩恩(James R. Payne) 著
作者: 王寒 屈光辉 周雪彬 著