PHP实战 图灵程序设计丛书·Web开发系列 人民邮电出版社 9787115217455 [挪]雷勒索、[英]贝克、[美]史夫利特 著;张颖 译
正版图书保证,可开电子发票,不清楚的请咨询客服。
¥
28.35
4.1折
¥
69
全新
仅1件
作者[挪]雷勒索、[英]贝克、[美]史夫利特 著;张颖 译
出版社人民邮电出版社
出版时间2010-01
版次1
装帧平装
上书时间2025-01-01
商品详情
- 品相描述:全新
图书标准信息
-
作者
[挪]雷勒索、[英]贝克、[美]史夫利特 著;张颖 译
-
出版社
人民邮电出版社
-
出版时间
2010-01
-
版次
1
-
ISBN
9787115217455
-
定价
69.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
428页
-
字数
656千字
-
正文语种
简体中文
-
原版书名
PHP in Action: Objects, Design, Agility
-
丛书
图灵程序设计丛书·Web开发系列
- 【内容简介】
-
随着PHP5的发布和Zend框架项目的应用,PHP和敏捷思想、设计模式以及单元测试的联姻成为主流话题。《PHP实战》首先介绍了面向对象设计的原则、模式和技巧,然后讲述了如何在PHP上利用其语法和特性,处理和实施这些原则、模式和技巧,并应用于Web编程中遇到的难题上。《PHP实战》适合所有使用PHP开发Web应用程序的人员阅读。
- 【作者简介】
-
雷勒索(DagfinnReiersφl),资深软件专家。有10多年的从业经验,设计并开发了Web应用程序、Web内容挖掘软件、Web编程工具以及文本分析程序。其中绝大多数都是运用PHP编写的。他居住在挪威奥斯陆。
贝克(MarcusBaker),资深软件专家。多年来一直从事面向对象设计和开发以及Web程序开发和测试方面的工作。他同时也是PHPArchitectectureMagazine的专栏作家。
史夫利特(ChrisShiflett),PHP软件专家、安全专家以及PHP社区的领军人物。他是PHP安全协会的奠基者,著有HTTPDeveloper,SHandbook和EssentialPHPSecurity两本图书。
- 【目录】
-
第一部分工具和概念
第1章PHP与现代软件开发2
1.1PHP的作用2
1.1.1PHP流行的原因3
1.1.2克服PHP的局限5
1.2语言、原则和模式7
1.2.1敏捷方法:从蛮干到巧干7
1.2.2PHP5和软件趋势8
1.2.3面向对象编程进化的规律8
1.2.4设计模式9
1.2.5重构10
1.2.6单元测试和TDD10
1.3小结13
第2章PHP中的对象14
2.1对象基础14
2.1.1为什么将PHP与Java相比较15
2.1.2对象和类15
2.1.3Helloworld15
2.1.4构造函数:创建和初始化对象16
2.1.5继承和关键字extends18
2.1.6继承构造函数19
2.2异常处理20
2.2.1异常的工作原理20
2.2.2何时使用异常与返回代码22
2.2.3创建自己的异常类23
2.2.4用异常替换PHP内置的严重错误24
2.2.5不要过度使用异常24
2.3PHP4和PHP5中的对象引用24
2.3.1对象引用的工作原理25
2.3.2对象引用的优势26
2.3.3引用何时没有用处27
2.4方法调用的拦截和类的实例化27
2.4.1什么是方法重载27
2.4.2PHP中的Java式方法重载27
2.4.3面向方面的体验:记录方法调用的日志28
2.4.4自动加载类30
2.5小结31
第3章有效使用PHP类32
3.1可见性:私有和受保护的方法与变量32
3.1.1对方法可见性的要求33
3.1.2何时使用私有方法34
3.1.3何时使用受保护方法34
3.1.4让实例变量保持private或protected属性35
3.1.5私有变量和受保护变量的存取36
3.1.6两全其美——通过拦截来控制变量37
3.1.7final类和方法38
3.2没有对象的类:类方法、类变量和类常量39
3.2.1类(静态)方法40
3.2.2何时使用类方法41
3.2.3类变量41
3.2.4类常量42
3.2.5PHP中常量的限制43
3.3抽象类和方法(函数)45
3.3.1什么是抽象类和方法45
3.3.2使用抽象类45
3.4类的类型提示46
3.4.1类型提示的作用46
3.4.2何时使用类型提示47
3.5接口48
3.5.1什么是接口49
3.5.2PHP中需要接口吗49
3.5.3用接口让设计更清晰50
3.5.4用接口改善类的类型提示50
3.5.5PHP5与Java中的接口51
3.6小结52
第4章理解对象和类53
4.1对象和类的优点54
4.1.1类帮助组织54
4.1.2可以告诉对象要做什么55
4.1.3多态性55
4.1.4对象让代码更易读56
4.1.5类帮助消除重复性代码59
4.1.6可以重用对象和类60
4.1.7避免牵一发而动全身61
4.1.8对象提供类型安全61
4.2好设计的标准62
4.2.1不要混淆结果和含义64
4.2.2透明性64
4.2.3简单设计64
4.2.4一次并且只有一次65
4.3什么是对象67
4.3.1对象来自虚构世界67
4.3.2域对象基础68
4.4小结70
第5章理解类关系71
5.1继承71
5.1.1将继承作为思考工具72
5.1.2继承重构73
5.2对象组合77
5.3接口79
5.3.1将接口作为思考工具79
5.3.2单继承和多继承80
5.4优先考虑对象组合而不是类继承80
5.4.1避免父类命名含糊81
5.4.2避免继承层次结构过深81
5.5小结82
第6章面向对象原则83
6.1原则和模式84
6.1.1架构原则或模式84
6.1.2了解面向对象原则85
6.2开放-封闭原则(OCP)85
6.2.1初识OCP85
6.2.2用类替换的情况86
6.2.3OCP在PHP中是如何相关的88
6.3单一职责原则(SRP)88
6.3.1混合职责:模板引擎89
6.3.2一个试验:分离职责91
6.3.3实验是否成功93
6.4依赖倒置原则(DIP)94
6.4.1什么是依赖性94
6.4.2插入接口96
6.5分层设计96
6.5.1“三层”模式及其同属97
6.5.2Web应用程序能否有域层98
6.6小结99
第7章设计模式100
7.1策略模式101
7.1.1使用策略模式的“Helloworld”101
7.1.2策略模式的用处103
7.2适配器模式104
7.2.1初学适配器模式104
7.2.2让一个模板引擎与另一个相像105
7.2.3具有多个类的适配器模式106
7.2.4调整为通用接口109
7.3装饰器模式109
7.3.1资源装饰器110
7.3.2装饰与再装饰111
7.4空对象模式113
7.4.1混合黑暗的灯和明亮的灯114
7.4.2空策略对象114
7.5迭代器模式115
7.5.1迭代器的工作原理115
7.5.2使用迭代器的好原因116
7.5.3迭代器与普通数组116
7.5.4SPL迭代器117
7.5.5SPL如何帮助我们解决迭代器和数组间的冲突118
7.6组合模式118
7.6.1用组合模式实现菜单118
7.6.2基本理论120
7.6.3连贯接口121
7.6.4递归处理121
7.6.5我们的方法低效吗123
7.7小结123
第8章设计指南:日期和时间处理124
8.1为何日期和时间处理要面向对象124
8.1.1更容易,但并非更简单125
8.1.2面向对象的优势125
8.2找到正确的抽象126
8.2.1单个时间表示法:时间点、Instant、DateAndTime126
8.2.2不同类别的时间范围:期间、持续时间、日期范围、时间间隔127
8.3高级对象构建128
8.3.1使用创建方法128
8.3.2多个构造函数129
8.3.3使用工厂类132
8.4大型结构133
8.4.1包的概念133
8.4.2命名空间和包134
8.4.3PHP缺少命名空间支持135
8.4.4处理名称冲突135
8.5使用值对象140
8.5.1对象引用带来的麻烦141
8.5.2实现值对象142
8.5.3更改不可变的对象142
8.6实现基本类143
8.6.1DateAndTime143
8.6.2属性和字段144
8.6.3期间149
8.6.4时间间隔151
8.7小结151
第二部分测试和重构
第9章测试驱动开发154
9.1过程形成质量155
9.1.1本示例的需求155
9.1.2报告测试结果156
9.2从数据库取数157
9.2.1基本测试157
9.2.2第一个真正的测试158
9.2.3通过测试160
9.2.4让代码运行161
9.2.5测试直到确信没有问题163
9.3数据库插入和更新164
9.3.1让测试更易读165
9.3.2红,绿,重构166
9.4真正的数据库事务处理168
9.4.1测试事务处理168
9.4.2实现事务处理170
9.4.3调试的终结171
9.4.4测试是工具,不是替代品171
9.5小结172
第10章高级测试技术173
10.1具有持久化功能的联系人管理器174
10.1.1运行多个测试用例174
10.1.2测试联系人的持久化175
10.1.3Contact和ContactFinder类177
10.1.4setUp()和tearDown()178
10.1.5最终版本179
10.2向联系人发送邮件180
10.2.1设计Mailer类及其测试环境180
10.2.2手工编写模拟对象181
10.2.3更为完善的模拟对象182
10.2.4自顶向下测试183
10.2.5模拟的局限性184
10.3虚拟的邮件服务器185
10.3.1安装fakemail186
10.3.2邮件测试187
10.3.3网关作为适配器190
10.4小结190
第11章重构Web应用程序192
11.1真实世界中的重构193
11.1.1早期重构和后期重构193
11.1.2重构与重新实现194
11.2重构基础:可读性和重复性代码195
11.2.1提高可读性195
11.2.2消除重复性代码197
11.3分离标记与程序代码199
11.3.1分离何以有用200
11.3.2合宜使用CSS200
11.3.3清理生成链接的函数201
11.3.4在SimpleTest中引入模板205
11.4简化条件表达式209
11.4.1简单示例210
11.4.2稍长的示例:身份验证代码211
11.4.3处理条件HTML216
11.5从面向过程到面向对象的重构217
11.5.1测试面向过程代码217
11.5.2进行重构218
11.6小结221
第12章用Web测试控制222
12.1再看联系人管理器223
12.1.1样板223
12.1.2创建Web测试225
12.1.3用虚拟网页交互通过测试226
12.1.4一次编写,到处测试227
12.2可工作的表单229
12.2.1尝试将联系人保存到数据库中230
12.2.2创建数据库231
12.2.3为查找器创建存根232
12.3质量保证234
12.3.1让联系人管理器可以进行单元测试234
12.3.2从用例到验收测试236
12.4可怕的遗留代码238
12.5小结242
第三部分构建Web界面
第13章使用模板管理Web表现层244
13.1分离表现层和域逻辑244
13.1.1分离还是不分离……245
13.1.2为什么使用模板245
13.2哪个模板引擎247
13.2.1普通PHP248
13.2.2定制语法:Smarty249
13.2.3属性语言:PHPTAL251
13.3转换:XSLT254
13.3.1“XML化”网页255
13.3.2设置XSLT256
13.3.3XSLT样式表256
13.3.4从PHP运行XSLT258
13.4将逻辑与模板分离259
13.4.1视图协助器260
13.4.2交替行颜色260
13.4.3处理日期和时间格式261
13.4.4生成层级显示263
13.4.5防止从模板更新265
13.5模板和安全266
13.5.1PHPTAL266
13.5.2Smarty267
13.5.3XSLT267
13.6小结267
第14章构建复杂网页269
14.1组合模板(复合视图)269
14.1.1复合视图:一个或多个设计模式269
14.1.2复合数据和复合模板270
14.2实现直观的复合视图270
14.2.1我们的目标270
14.2.2使用Smarty272
14.2.3使用PHPTAL273
14.2.4使用PHPTAL的页面宏274
14.3复合视图示例275
14.3.1制作打印友好的页面276
14.3.2将现有应用程序集成到复合视图中277
14.3.3多方显示站点和Fowler的两步视图278
14.4小结280
第15章用户交互281
15.1MVC体系结构282
15.1.1拨开MVC的迷雾283
15.1.2定义基本概念284
15.1.3命令还是操作286
15.1.4WebMVC不是富客户MVC286
15.2Web命令模式287
15.2.1工作原理288
15.2.2命令标识符288
15.2.3Web处理程序289
15.2.4命令执行器289
15.3保持实现简单290
15.3.1示例:“原生的”Web应用程序290
15.3.2引入命令函数292
15.4小结294
第16章控制器296
16.1控制器和请求对象297
16.1.1基本请求对象297
16.1.2安全问题298
16.2使用页面控制器299
16.2.1简单示例300
16.2.2从页面控制器选择视图301
16.2.3让命令可进行单元测试302
16.2.4避免HTML输出303
16.2.5使用模板303
16.2.6重定向问题304
16.3构建前端控制器307
16.3.1一个命令一个类的Web处理程序307
16.3.2命令还需要些什么308
16.3.3使用命令组309
16.3.4有多个提交按钮的表单310
16.3.5用JavaScript生成命令311
16.3.6用于复合视图的控制器311
16.4小结312
第17章输入验证314
17.1应用程序设计中的输入验证315
17.1.1验证和应用程序体系结构315
17.1.2验证策略316
17.1.3命名表单组件317
17.2服务器端验证及其问题317
17.2.1重复问题318
17.2.2样式问题318
17.2.3测试和页面导航问题319
17.2.4我们能解决多少问题319
17.3客户端验证320
17.3.1普通的乏味的客户端验证320
17.3.2逐个验证字段321
17.3.3你做不到这一点323
17.3.4表单326
17.4面向对象的服务器端验证327
17.4.1规则和验证程序328
17.4.2安全的请求对象体系结构329
17.4.3现在验证非常简单333
17.4.4让其变得简单的类334
17.4.5使用Specification对象336
17.4.6知识丰富的设计339
17.4.7向外观添加验证340
17.5同步服务器端和客户端验证341
17.5.1表单生成器342
17.5.2配置文件342
17.5.3从客户端验证生成服务器端验证343
17.6小结343
第18章表单处理345
18.1用HTML_QuickForm设计解决方案345
18.1.1最小需求和设计346
18.1.2将生成的元素放到HTML表单中346
18.1.3找到抽象347
18.1.4更为具体的需求348
18.1.5选择问题349
18.2实现解决方案350
18.2.1包装HTML_QuickForm元素350
18.2.2输入控件351
18.2.3哪个类创建表单控件354
18.2.4验证355
18.2.5在模板中使用表单对象357
18.2.6下一步做什么359
18.3小结359
第19章数据库连接、抽象和配置361
19.1数据库抽象362
19.1.1预处理语句362
19.1.2面向对象的数据库查询364
19.2装饰和适配数据库资源对象366
19.2.1简单的可配置数据库连接366
19.2.2从结果集制作与SPL兼容的迭代器367
19.3让数据库连接可用369
19.3.1单例和类似模式370
19.3.2服务定位器和注册表371
19.4小结373
第四部分数据库和基础结构
第20章对象和SQL376
20.1对象-关系阻抗不匹配376
20.2封装和隐藏SQL378
20.2.1基本示例378
20.2.2在SQL语句中替换字符串379
20.3通用化SQL383
20.3.1列的列表和表名383
20.3.2使用SQL别名386
20.3.3生成INSERT、UPDATE和DELETE语句386
20.3.4查询对象390
20.3.5适用的设计模式391
20.4小结391
第21章数据类设计392
21.1最简单的方法392
21.1.1用Finder类检索数据393
21.1.2主要程序:表数据网关395
21.2让对象自身持久化400
21.2.1自我持久化的查找器401
21.2.2让对象存储自己405
21.3数据映射器模式406
21.3.1数据映射器和DAO406
21.3.2这些模式无甚差别408
21.3.3模式小结409
21.4实际使用效果409
21.4.1模式在典型Web应用程序中的效果410
21.4.2优化查询411
21.5小结411
附录A测试工具和小技巧412
附录B安全420
参考文献429
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价