📚 《深入 PHP:面向对象、模式与实践(第 3 版)》纸质实体书免费送啦!

本贴最后更新于 2811 天前,其中的信息可能已经事过境迁

** 有需要该书的朋友请回帖沟通寄送方式,谢谢!**

深入 PHP:面向对象、模式与实践(第 3 版)

深入 PHP:面向对象、模式与实践(第 3 版)深入 PHP:面向对象、模式与实践(第 3 版)

作者

  • [美] Matt Zandstra

Matt Zandstra 从事互联网应用开发十余年,目前是雅虎公司工程师,从事核心模板管理系统的开发。他是一位多产的技术作家,除本书外另著有 Sams Teach Yourself PHP in 24 Hours 等,他还为 Linux Magazine、php|architect 杂志、IBM DeveloperWorks、Zend.com 和 bdz-consult.com 写过许多 PHP 方面的文章。

译者

  • 陈浩
  • 吴孙滨
  • 胡丹
  • 李静

内容简介

本书是 PHP 专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用 Subversion 管理多个开发人员,如何使用 Phing 和 PEAR 进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成。

本书适合中高级 PHP 程序员阅读。

目录

第一部分 介 绍
第 1 章 PHP:设计与管理  2
1.1 问题  2
1.2 PHP 和其他语言  3
1.3 关于本书  5
1.3.1 对象   5
1.3.2 模式   5
1.3.3 实践   6
1.3.4 第 3 版新增内容  7
1.4 小结   7
第二部分 对 象
第 2 章 PHP 与对象  10
2.1 PHP 对象的偶然成功   10
2.1.1 最初:PHP/FI   10
2.1.2 语法糖:PHP 3  10
2.1.3 一场静悄悄的革命:PHP 4  11
2.1.4 拥抱改变:PHP 5   12
2.2 走向未来:PHP 6   13
2.3 拥护和疑虑:关于对象的争辩   13
2.4 小结   14
第 3 章 对象基础   15
3.1 类和对象   15
3.1.1 编写第一个类  15
3.1.2 第一个对象(或两个)    16
3.2 设置类中的属性  17
3.3 使用方法  19
3.4 参数和类型  21
3.4.1 基本类型  22
3.4.2 获得提示:对象类型   24
3.5 继承  26
3.5.1 继承问题  26
3.5.2 使用继承  30
3.5.3 public、private、protected:管理类的访问  35
3.6 小结    39
第 4 章 高级特性   40
4.1 静态方法和属性  40
4.2 常量属性  43
4.3 抽象类  44
4.4 接口  46
4.5 延迟静态绑定:static 关键字   47
4.6 错误处理  50
4.7 Final 类和方法  56
4.8 使用拦截器  57
4.9 析构方法   61
4.10 使用__clone()复制对象  62
4.11 定义对象的字符串值  64
4.12 回调、匿名函数和闭包   65
4.13 小结   69
第 5 章 对象工具  70
5.1 PHP 和包  70
5.1.1 PHP 包和命名空间   70
5.1.2 自动加载  78
5.2 类函数和对象函数  79
5.2.1 查找类  80
5.2.2 了解对象或类  81
5.2.3 了解类中的方法   82
5.2.4 了解类属性   83
5.2.5 了解继承  83
5.2.6 方法调用  84
5.3 反射 API  85
5.3.1 入门  85
5.3.2 开始行动  86
5.3.3 检查类  88
5.3.4 检查方法   89
5.3.5 检查方法参数   91
5.3.6 使用反射 API   92
5.4 小结  95
第 6 章 对象与设计   96
6.1 代码设计的定义  96
6.2 面向对象设计和过程式编程   97
6.2.1 职责  100
6.2.2 内聚  100
6.2.3 耦合  101
6.2.4 正交  101
6.3 选择类   101
6.4 多态   102
6.5 封装    104
6.6 忘记细节  105
6.7 4 个方向标  105
6.7.1 代码重复  106
6.7.2 类知道的太多  106
6.7.3 万能的类   106
6.7.4 条件语句   106
6.8 UML  106
6.8.1 类图   107
6.8.2 时序图  111
6.9 小结   112
第三部分 模 式
第 7 章 什么是设计模式?为何使用它们   114
7.1 什么是设计模式  114
7.2 设计模式概览  116
7.2.1 命名  116
7.2.2 问题  116
7.2.3 解决方案  117
7.2.4 效果   117
7.3 《设计模式》格式  117
7.4 为什么使用设计模式  118
7.4.1 一个设计模式定义了一个问题   118
7.4.2 一个设计模式定义了一个解决方案  118
7.4.3 设计模式是语言无关的   118
7.4.4 模式定义了一组词汇   118
7.4.5 模式是经过测试的   119
7.4.6 模式是为协作而设计的   119
7.4.7 设计模式促进良好设计   119
7.5 PHP 与设计模式  120
7.6 小结  120
第 8 章 模式原则  121
8.1 模式的启示  121
8.2 组合与继承  122
8.2.1 问题  122
8.2.2 使用组合  124
8.3 解耦  127
8.3.1 问题  127
8.3.2 降低耦合  128
8.4 针对接口编程,而不是针对实现编程  130
8.5 变化的概念  131
8.6 父子关系  132
8.7 模式  132
8.7.1 用于生成对象的模式   133
8.7.2 用于组织对象和类的模式   133
8.7.3 面向任务的模式   133
8.7.4 企业模式  133
8.7.5 数据库模式  133
8.8 小结    133
第 9 章 生成对象  134
9.1 生成对象的问题和解决方法   134
9.2 单例模式   138
9.2.1 问题    138
9.2.2 实现   139
9.2.3 结果   141
9.3 工厂方法模式  141
9.3.1 问题  141
9.3.2 实现  143
9.3.3 结果  145
9.4 抽象工厂模式  146
9.4.1 问题  146
9.4.2 实现   147
9.4.3 结果  148
9.4.4 原型模式  150
9.4.5 问题  150
9.4.6 实现  151
9.5 某些模式的骗术  153
9.6 小结  154
第 10 章 让面向对象编程更加灵活的模式  155
10.1 构造可灵活创建对象的类   155
10.2 组合模式  155
10.2.1 问题   156
10.2.2 实现  158
10.2.3 效果  161
10.2.4 组合模式小结  164
10.3 装饰模式  165
10.3.1 问题  165
10.3.2 实现   167
10.3.3 效果  170
10.4 外观模式   170
10.4.1 问题  170
10.4.2 实现  172
10.4.3 效果  172
10.5 小结   173
第 11 章 执行及描述任务  174
11.1 解释器模式  174
11.1.1 问题  174
11.1.2 实现  175
11.1.3 解释器的问题   182
11.2 策略模式  183
11.2.1 问题   183
11.2.2 实现  184
11.3 观察者模式  187
11.4 访问者模式  194
11.4.1 问题  194
11.4.2 实现  195
11.4.3 访问者模式的问题   199
11.5 命令模式  200
11.5.1 问题  200
11.5.2 实现   200
11.6 小结   204
第 12 章 企业模式   205
12.1 架构概述  205
12.1.1 模式   205
12.1.2 应用程序和层   206
12.2 企业架构之外的基础模式   208
12.2.1 注册表   208
12.2.2 实现  209
12.3 表现层  217
12.3.1 前端控制器   217
12.3.2 应用控制器  227
12.3.3 页面控制器  237
12.3.4 模板视图和视图助手   242
12.4 业务逻辑层   245
12.4.1 事务脚本  245
12.4.2 领域模型  249
12.5 小结  252
第 13 章 数据库模式  253
13.1 数据层   253
13.2 数据映射器  253
13.2.1 问题  254
13.2.2 实现  254
13.2.3 效果   265
13.3 标识映射  266
13.3.1 问题  266
13.3.2 实现  266
13.3.3 效果  269
13.4 工作单元   269
13.4.1 问题   269
13.4.2 实现  270
13.4.3 效果  274
13.4.4 延迟加载   274
13.4.5 问题  274
13.4.6 实现   274
13.4.7 效果  276
13.5 领域对象工厂  276
13.5.1 问题  276
13.5.2 实现  277
13.5.3 效果  278
13.6 标识对象  279
13.6.1 问题  279
13.6.2 实现   280
13.6.3 效果  285
13.7 选择工厂和更新工厂模式   285
13.7.1 问题   285
13.7.2 实现  285
13.7.3 效果  288
13.8 数据映射器中剩下些什么   289
13.9 小结  291
第四部分 实 践
第 14 章 良好和糟糕的实践   294
14.1 超越代码  294
14.2 借一个轮子  295
14.3 合作愉快  296
14.4 为你的代码插上双翼   297
14.5 文档   297
14.6 测试    298
14.7 持续集成   299
14.8 小结    300
第 15 章 PEAR 和 Pyrus   301
15.1 什么是 PEAR    301
15.2 了解 Pyrus   302
15.3 安装 PEAR 包   303
15.4 使用 PEAR 包   306
15.5 创建自己的 PEAR 包   311
15.5.1 package.xml    311
15.5.2 package.xml 的组成   312
15.5.3 contents 元素   313
15.5.4 依赖   316
15.5.5 使用 phprelease 进行灵活的自定义安装  317
15.5.6 准备发布包    318
15.5.7 创建自己的 PEAR 频道   318
15.6 小结  323
第 16 章 用 phpDocumentor 生成文档   324
16.1 为什么要使用文档    324
16.2 安装  325
16.3 生成文档   325
16.4 DocBlock 注释    327
16.5 类的文档    328
16.6 文件的文档    330
16.7 属性的文档    330
16.8 方法的文档   331
16.9 在文档中创建链接  333
16.10 小结  335
第 17 章 使用 Subversion 进行版本控制  336
17.1 为什么要使用版本控制   336
17.2 获得 Subversion   337
17.3 配置 Subversion 代码库   338
17.4 开始项目   339
17.5 更新和提交   341
17.6 增加和删除文件及目录   344
17.6.1 添加文件  344
17.6.2 删除文件  345
17.6.3 添加目录  345
17.6.4 删除目录  345
17.7 标记和导出项目   345
17.7.1 标记项目   345
17.7.2 导出项目  346
17.8 创建项目分支  347
17.9 小结  350
第 18 章 使用 PHPUnit 进行测试   351
18.1 功能测试与单元测试   351
18.2 手工测试  352
18.3 引入 PHPUnit   354
18.3.1 创建测试用例  354
18.3.2 断言方法   355
18.3.3 测试异常  356
18.3.4 运行测试套件  357
18.3.5 约束  358
18.3.6 模拟与桩  360
18.3.7 失败是成功之母   362
18.4 编写 Web 测试  365
18.4.1 为测试重构 Web 应用   366
18.4.2 简单的 Web 测试   368
18.4.3 Selenium   370
18.5 警告    374
18.6 小结   376
第 19 章 用 Phing 实现项目的自动构建   377
19.1 什么是 Phing   377
19.2 获取和安装 Phing    378
19.3 编写 build 文档   378
19.3.1 目标   380
19.3.2 属性   382
19.3.3 类型   387
19.3.4 任务   391
19.4 小结   394
第五部分 结 论
第 20 章 持续集成   396
20.1 什么是持续集成  396
20.2 CruiseControl 和 phpUnderControl  404
20.2.1 安装 CruiseControl   404
20.2.2 安装 phpUnderControl   406
20.2.3 安装项目   408
20.3 小结  418
第 21 章 对象、模式与实践   419
21.1 对象  419
21.1.1 选择  420
21.1.2 封装和委托  420
21.1.3 解耦   420
21.1.4 复用性   421
21.1.5 美学  421
21.2 模式  421
21.2.1 模式给我们带来了什么   422
21.2.2 模式和设计原则   422
21.3 实践   424
21.3.1 测试  424
21.3.2 文档   424
21.3.3 版本控制  425
21.3.4 自动构建   425
21.3.5 持续集成  425
21.3.6 我们还遗漏了什么   425
21.4 小结   426
第六部分 附 录
附录 A 参考文献  428
附录 B 简单的解析器  431

其他

  • 出版社:人民邮电出版社
  • 副标题:
  • 原作名:PHP Objects, Patterns and Practice
  • 出版年:2011-7
  • 总页数:450
  • 定 价:69.00 元
  • 装 帧:平装
  • ISBN:9787115256249

关于『书单』

书单是黑客派社区的一个纸质书共享活动,所有书均来自捐赠,原则上当前的书籍持有者有义务将书寄送给需要的会员。我们鼓励你在书籍上留下笔迹,任何信息都行,让其他人可以看到一些有意思的内容也是蛮不错的 😅

共享意味着什么

一旦你共享了一本书,就会使用你的社区账号自动发一篇书籍共享帖,这意味着你做了一个承诺:将书送到需要的人手中。如果有同城的书籍需求者回帖,就面交吧!

如何参与

  1. 使用微信扫描如下二维码,进入黑客派社区小程序
    3c04bd33b54a493aa97107a94a1ae706.png
  2. 按照小程序的指引开始即可

一点思考

类似共享书籍的事情有很多人做过,比如:

  • 摆摆书架
  • 青番茄
  • 书巢
  • 丢书大作战
  • 很多社区的书籍交换

大家的出发点都是想让这个世界变得更好。黑客派的『书单』将作为长期活动持续下去,大家随时都能参与进来,让你我的生活变得更丰富有趣!

  • 书单

    『书单』是 [黑客派] 社区的纸质书共享计划第一版,目前已经下线。其升级版『链书』基于区块链的技术,实现去中心化的货币 + 去中心化的图书馆,已于 2018 年 6 上线。

    77 引用 • 638 回帖 • 493 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 489 关注
  • 面向对象
    13 引用 • 28 回帖
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 世界上最好的语言居然没人关注。这个是你前久在看的么?

    2 回复
  • scorpion
    作者

    嗯,是的,还没看完,我发现媳妇也有本一样的,所以送一本

  • someone1764

    不不不,我有关注的

  • someone1764

    楼主大神是哪里人,要是广州的话可以面交吗

    1 回复
  • scorpion
    作者

    昆明的,只能邮寄了

    1 回复
  • someone1764

    除了地址还有什么资料呢?

    1 回复
  • scorpion
    作者

    姓名,电话,地址,快递三要素;此处应有私信功能 @88250 @Vanessa

    1 回复
  • 88250

    有私信的嘛

    2 回复
  • @scorpion 说的是这里有个快捷链接可以放私信,点击进去内容就是姓名,电话,地址,快递三要素

    1 回复
  • scorpion
    作者

    小黑屋?

    1 回复
  • scorpion
    作者

    V 姐,你想多了-。-,不过听起来不错的样子

    1 回复
  • 88250

    嗯,私信也是用这个实现的。

    1 回复
  • 那是啥?

  • someone1764 1

    @Vanessa 我已经和楼主在小黑屋达成了交易了~

    1 回复
  • 什么时候学起 PHP 了?

    1 回复
  • someone1764

    不不不,我一直都是搞 PHP 的....

    1 回复
  • 我记得你是 UI 呀?

    1 回复
  • someone1764

    汗...可能是因为我提过些优化意见让 V 姐记错了..

    1 回复
  • scorpion
    作者

    Sorry,昨天出门的时候忘记带书了,今天已经联系快递下午来取了

    1 回复
  • someone1764

    OK,快递可以选择周一至周五送到吗

    1 回复
  • hon

    @scorpion 逗比师傅 我貌似来晚了,还说我借来翻翻

    1 回复
  • scorpion
    作者

    我寄的时候问问

  • scorpion
    作者

    不怕,你已经翻过了

请输入回帖内容 ...