《PHP 6高级编程》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)汤普森,(美)诺维茨基等著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302238249
  • 页数:650 页
图书介绍:本书介绍了使用PHP 6提供的各种工具的方法、使用不同PHP技术应对常见的软件开发难题、在不同规模项目中实现质量保证和测试、使用PHP 6构造高流量或高可用性的站点等内容。

第Ⅰ部分 专业开发基础第1章 面向对象编程概述 3

1.1 面向对象编程的概念 3

1.1.1 OOP的优点 4

1.1.2 一个现实世界的例子 4

1.2 理解OOP概念 5

1.3 类 5

1.3.1 对象 6

1.3.2 继承 15

1.3.3 接口 24

1.3.4 封装 26

1.4 PHP 6中OO支持的改动 27

1.5 本章小结 28

第2章 统一建模语言(UML) 31

2.1 需求收集 31

2.1.1 会见客户 32

2.1.2 用例图 32

2.2 类图 34

2.2.1 领域建模 34

2.2.2 关系 36

2.3 活动图 41

2.4 顺序图 43

2.5 状态图 45

2.6 组件图和部署图 45

2.7 本章小结 47

第3章 使用对象 49

3.1 创建联系人管理器 49

3.1.1 联系人管理器UML图 50

3.1.2 PropertyObiect类 54

3.1.3 联系信息类型类 56

3.1.4 DataManager类 60

3.1.5 Entity类、Individual类和Organization类 62

3.2 使用系统 70

3.3 本章小结 72

第4章 设计模式 73

4.1 组合模式 73

4.1.1 实现 75

4.1.2 几点考虑事项 79

4.2 观察者模式 80

4.2.1 窗口部件 81

4.2.2 几点考虑事项 86

4.3 装饰器模式 87

4.3.1 实现 89

4.3.2 使用装饰器模式 90

4.3.3 几点考虑事项 92

4.4 外观模式 92

4.5 建造者模式 94

4.5.1 实现 94

4.5.2 几点考虑事项 98

4.6 本章小结 98

第5章 Collection类 101

5.1 设计Collection类的目的 101

5.2 设计Collection类 102

5.3 Collection类的基本方法 103

5.3.1 addItem方法 104

5.3.2 removeItem方法和getItem方法 105

5.3.3 其他方法 105

5.3.4 使用Collection类 106

5.4 实现惰性实例化 107

5.4.1 回调 108

5.4.2 Collection类中的setLoadCallback方法 113

5.5 使用Collection类 117

5.6 改进Collection类 123

5.7 本章小结 123

第6章 使用PDO的数据库抽象 125

6.1 PHP和数据库 125

6.1.1 PHP的数据库支持 126

6.1.2 PHP和PostgreSQL 126

6.1.3 概述 127

6.1.4 问题 131

6.1.5 包装器类 131

6.1.6 总结 132

6.2 数据库抽象 132

6.2.1 所需的技术 133

6.2.2 PDO简介 133

6.2.3 PDO入门 133

6.3 使用PDO 135

6.3.1 PDO类 135

6.3.2 执行查询 136

6.3.3 PDOStatement类 137

6.3.4 预置语句 137

6.3.5 只写语句 139

6.3.6 事务与提交 140

6.3.7 常量 141

6.3.8 处理错误 141

6.4 高级PDO技术 143

6.4.1 大对象 143

6.4.2 数据库特有的函数 145

6.4.3 持久连接 145

6.4.4 存储过程 146

6.4.5 单元素实例化 146

6.5 PDO的局限性 147

6.5.1 查询语法 148

6.5.2 功能模拟 148

6.5.3 非SQL数据源 149

6.5.4 掌握PDO所需的额外知识 149

6.6 本章小结 149

第Ⅱ部分 高级开发技术第7章 对象关系映射 153

7.1 类的类型 153

7.1.1 实用类 154

7.1.2 业务类 154

7.2 业务对象详解 155

7.2.1 设计 155

7.2.2 原型 155

7.2.3 添加数据绑定 158

7.2.4 可行的业务对象 160

7.2.5 确保满足需求 164

7.2.6 理解工作原理 168

7.2.7 局限性 169

7.3 更加智能的方式 170

7.3.1 惰性实例化 170

7.3.2 属性监控 171

7.3.3 可重用性 171

7.4 DataBoundObject类 171

7.4.1 设计 171

7.4.2 编码 172

7.4.3 示例实现 176

7.4.4 工作原理 178

7.4.5 优点 182

7.5 本章小结 183

第8章 事件驱动编程 185

8.1 理解事件 185

8.2 使用OOP处理事件 186

8.2.1 设计事件驱动解决方案 187

8.2.2 实现解决方案 189

8.2.3 实现安全性 193

8.2.4 暂停并思考 195

8.3 本章小结 196

第9章 记录和调试 197

9.1 创建记录机制 197

9.1.1 简单文件记录 197

9.1.2 文件系统布局示例 198

9.1.3 Logger类 199

9.1.4 扩展Logger类 204

9.2 创建调试机制 215

9.3 本章小结 218

第10章 编写和使用Web服务 219

10.1 SOAP 220

10.1.1 SOAP和PHP 6 220

10.1.2 PHP 6 SOAP扩展 221

10.2 创建SOAP客户端 224

10.2.1 分析后台工作原理 226

10.2.2 SOAP客户端上的异常处理 232

10.3 构建SOAP服务器 233

10.3.1 创建并注册函数 234

10.3.2 创建WSDL文档 234

10.4 REST 236

10.5 实现REST客户端 237

10.6 构建REST服务器 239

10.7 本章小结 240

第11章 与用户通信 241

11.1 实现通信的必要性 241

11.1.1 与用户通信的原因 242

11.1.2 在Web浏览器之外考虑问题 243

11.2 通信的类型 244

11.2.1 所有通信的共有部分 244

11.2.2 不是所有通信都拥有的部分 244

11.2.3 收件人的情况 244

11.3 作为类层次结构的通信 245

11.3.1 Recipient类:快速测试类似于OOP的思想 245

11.3.2 通信类 249

11.4 给用户发送电子邮件 252

11.4.1 构建测试版本 253

11.4.2 分析消息 256

11.4.3 灵活利用模板 262

11.4.4 使用MIME 264

11.5 其他通信子类 264

11.5.1 SMS文本消息收发 264

11.5.2 传真 265

11.6 其他需要考虑的因素 265

11.6.1 阻塞活动 265

11.6.2 可传递性 266

11.7 本章小结 268

第12章 会话和身份验证 269

12.1 会话简介 269

12.1.1 HTTP的工作原理 270

12.1.2 会话的定义 271

12.1.3 会话永存 272

12.1.4 会话安全 275

12.1.5 良好的会话实践 278

12.2 PHP实现会话的方式 280

12.2.1 基本PHP会话 280

12.2.2 基本PHP会话的局限性 282

12.3 创建身份验证类 283

12.3.1 将PHP会话管理连接到数据库 283

12.3.2 HTTPSession类简介 284

12.3.3 数据库模式 285

12.3.4 代码:HTTPSession.Phpm 286

12.3.5 代码:测试HTTPSession类 290

12.3.6 HTTPSession类的工作原理 293

12.3.7 性能考虑事项 295

12.3.8 将所有内容串在一起 296

12.4 本章小结 296

第13章 应用程序体系结构 299

13.1 MVC简介 300

13.1.1 模型 300

13.1.2 视图 301

13.1.3 控制器 301

13.1.4 Web应用程序中的MVC 302

13.1.5 PHP中的MVC 302

13.2 MVC微型工具包 304

13.2.1 工具包简介 304

13.2.2 使用工具包 317

13.2.3 关于PRG的讨论 324

13.2.4 第三方工具包 324

13.3 真正的模板化 325

13.3.1 重新实现原始PHP模板化 325

13.3.2 原始模板化的隐患 325

13.3.3 使用Smarty模板实现真正的模板化 326

13.3.4 安装Smarty 326

13.3.5 使用Smarty 327

13.3.6 Smarty高级功能 333

13.3.7 使用Smarty模板化的场合与使用传统模板化的场合 335

13.4 少量的建模工作 335

13.4.1 单元测试简介 336

13.4.2 PHPUnit简介 339

13.4.3 如此麻烦的必要性 343

13.5 本章小结 344

第14章 PHP应用程序架构 347

14.1 架构简介 347

14.1.1 应用程序结构 348

14.1.2 代码和显示逻辑分离 348

14.1.3 验证 348

14.1.4 URL重写 349

14.1.5 表单的持久化 349

14.1.6 对象关系映射 350

14.1.7 数据库抽象 350

14.1.8 实用类 351

14.2 用例场景 351

14.3 应用程序示例 353

14.3.1 Ulysses简介 353

14.3.2 安装Ulysses 353

14.3.3 使用Ulysses 354

14.3.4 设置 355

14.3.5 业务对象 356

14.3.6 servlet 357

14.3.7 处理用户输入 362

14.3.8 持久化 364

14.3.9 验证 364

14.3.10 快速检查 365

14.3.11 保存输入 366

14.3.12 大功告成 367

14.3.13 快速总结 367

14.4 其他一些架构 368

14.4.1 Prado 369

14.4.2 Zend Framework 369

14.5 部署考虑事项 370

14.6 本章小结 371

第Ⅲ部分 现实世界案例研究第15章 项目概述 375

15.1 Widget World 376

15.2 Widget World概述 377

15.2.1 技术层 377

15.2.2 财务层 378

15.2.3 行政层 378

15.2.4 您所扮演的角色 378

15.2.5 需求是否确实与技术有关 378

15.3 开发方法 378

15.3.1 开发方法对您的意义 380

15.3.2 相关技术 381

15.4 本章小结 381

第16章 项目管理 383

16.1 做准备工作 383

16.1.1 新项目产生的原因 384

16.1.2 项目的接收方 384

16.1.3 项目的历史 385

16.1.4 项目的预期先决条件 386

16.2 接收正式摘要 386

16.2.1 业务需求 387

16.2.2 需求范围 388

16.2.3 时间表 389

16.2.4 预算 390

16.2.5 商业条款 391

16.2.6 未来规划 392

16.2.7 外观 393

16.2.8 技术 393

16.2.9 支持 393

16.2.10 现在的工作 394

16.3 构建计划书 394

16.3.1 计划书与报价 394

16.3.2 计划书与规范 395

16.3.3 拟定计划书时的参与人员 395

16.3.4 何时做进一步努力 396

16.3.5 何时退出竞争 396

16.3.6 组织计划书 397

16.4 选择人员 398

16.4.1 项目经理 398

16.4.2 客户经理 398

16.4.3 首席架构师 399

16.4.4 软件架构师和工程师 399

16.4.5 客户方开发人员 399

16.4.6 信息架构师 400

16.4.7 高级设计师 400

16.4.8 工作室艺术家 400

16.4.9 双重化角色 400

16.4.10 工作实践 400

16.4.11 客户的角色 401

16.5 本章小结 401

第17章 项目规划 403

17.1 选择开发过程 403

17.1.1 瀑布式开发过程 404

17.1.2 螺旋式开发过程 405

17.1.3 选定开发过程 406

17.2 通用开发过程实践 406

17.2.1 规范说明阶段 406

17.2.2 设计阶段 408

17.2.3 构建阶段 410

17.2.4 测试阶段 410

17.2.5 移交 411

17.3 编程方法和实践 412

17.3.1 测试驱动的开发 412

17.3.2 极限编程 412

17.4 改动管理 414

17.4.1 规范修订 414

17.4.2 客户签署同意意见后的规范改动 414

17.4.3 解释的差异所产生的争论 415

17.4.4 客户报告的漏洞 415

17.5 本章小结 415

第18章 系统体系结构 417

18.1 系统体系结构 417

18.1.1 系统体系结构的重要性 417

18.1.2 需要做的工作 418

18.2 确定业务需求 419

18.3 确定硬件需求 420

18.3.1 Web服务器 420

18.3.2 数据库服务器 420

18.3.3 负载均衡 420

18.3.4 防火墙 421

18.4 理解物理环境和连接性 422

18.4.1 计算CIR 422

18.4.2 计算月传输量 423

18.4.3 机柜空间的考虑事项 423

18.4.4 网络的考虑事项 423

18.4.5 存储的考虑事项 424

18.5 管理维护工作 424

18.6 本章小结 425

第19章 构建应用程序 427

19.1 开始项目:星期一 427

19.1.1 了解项目相关情况 428

19.1.2 素材权重评估 430

19.1.3 发布规划 435

19.2 开始工作 436

19.2.1 列出素材9的详细信息 436

19.2.2 编写测试 437

19.2.3 PHPUnit 438

19.2.4 创建登录页面 446

19.2.5 下一个素材 449

19.2.6 重新评估 459

19.3 整理代码 460

19.4 结束该循环 468

19.4.1 素材14:改变星期时再次调用之前的一星期 468

19.4.2 素材15:客户联系人报表中的每星期项 469

19.5 差旅费用报表 477

19.5.1 差旅费用项 479

19.5.2 每星期差旅费用 482

19.5.3 准备工作 485

19.5.4 更多的每星期差旅费用测试 486

19.5.5 实现满足每星期差旅费用测试的代码 488

19.5.6 最终的差旅费用报表 500

19.6 仿制对象 515

19.7 本章小结 519

第20章 质量保证与测试 521

20.1 QA简介 521

20.1.1 目标要远大 522

20.1.2 质量的定义 523

20.1.3 可度量和可量化的质量 523

20.2 测试 525

20.2.1 单元测试 525

20.2.2 功能测试 526

20.2.3 负载测试 527

20.2.4 易用性测试 528

20.2.5 故障跟踪 528

20.2.6 使用Mantis进行高效的故障管理 529

20.2.7 最有效地使用Mantis 536

20.3 本章小结 536

第21章 部署 537

21.1 设计开发环境 537

21.1.1 工作室开发环境 537

21.1.2 工作室准生产环境 538

21.1.3 现场准生产环境 539

21.1.4 现场生产环境 540

21.1.5 开发数据库 541

21.2 部署工作流 542

21.3 本章小结 548

第Ⅳ部分 超越PHP的极限第22章 PHP世界中的内容管理 551

22.1 内容管理的定义 551

22.2 内容管理简史 553

22.3 PHP CMS示例 554

22.3.1 Drupal 554

22.3.2 Joomla! 556

22.3.3 ExpressionEngine 558

22.3.4 Frog CMS 560

22.4 构建自己的系统 562

22.4.1 内容相关的问题 562

22.4.2 管理员和特权 564

22.4.3 工作流 565

22.4.4 模板 566

22.5 本章小结 567

第23章 处理高流量和高可用性 569

23.1 理解术语 569

23.1.1 高可用性 569

23.1.2 高流量 570

23.2 平台 570

23.2.1 外部网络 571

23.2.2 内部网络 572

23.2.3 硬件 572

23.2.4 操作系统 573

23.2.5 Web服务器 574

23.2.6 应用服务器 574

23.2.7 数据库 575

23.2.8 软件体系结构 575

23.3 影响因素 576

23.3.1 服务器负载 576

23.3.2 组件故障 577

23.3.3 网络负载 577

23.3.4 网络故障 578

23.4 缓解技术 578

23.4.1 负载平衡 578

23.4.2 地域平衡 580

23.4.3 NIC teaming 581

23.4.4 磁盘容错 581

23.4.5 电源冗余 582

23.4.6 多网段拓扑 583

23.4.7 数据库集群和复制 585

23.4.8 流量演算 586

23.4.9 缓存 587

23.4.10 内容生成 588

23.4.11 资源服务器 589

23.4.12 CDN 589

23.5 现实世界的示例 590

23.5.1 Flickr 590

23.5.2 Wikipedia 591

23.6 本章小结 592

第24章 倡导使用PHP的原因 593

24.1 较低的开销 593

24.2 语言的简洁性 594

24.2.1 弱类型化语言 595

24.2.2 简化的标点符号 595

24.2.3 普遍理解的语法 596

24.3 跨平台支持 596

24.4 无处不在 597

24.5 强大的功能 598

24.6 本章小结 599

第25章 PHP职业生涯 601

25.1 动机 601

25.2 开发人员职业生涯 602

25.2.1 Web开发之外的技能 602

25.2.2 软技能 602

25.2.3 学术技能 603

25.2.4 社区技能 604

25.3 本章小结 604

第Ⅴ部分 附录 607

附录A 版本控制 607

A.1 版本控制的基本原理 607

A.1.1 并行版本控制与独占版本控制 608

A.1.2 版本控制拓扑 613

A.2 版本控制软件 615

A.2.1 Microsoft Visual SourceSafe 615

A.2.2 CVS 616

A.2.3 Subversion 616

A.2.4 其他次要的竞争产品 617

A.3 高级版本控制技术 617

A.3.1 分支 617

A.3.2 标记 617

A.3.3 注解 618

A.3.4 二进制文件 618

A.4 本章小结 618

附录B PHP集成开发环境 619

B.1 选择IDE 619

B.1.1 Zend Studio 620

B.1.2 Komodo 626

B.2 其他的IDE和编辑器 628

B.3 本章小结 629

附录C PHP应用程序性能调整 631

C.1 性能问题概述 631

C.1.1 性能瓶颈的类型 631

C.1.2 剖析PHP请求 633

C.1.3 跟踪性能瓶颈 634

C.2 为提高性能进行修补 636

C.2.1 修正数据库阻塞 636

C.2.2 修正代码阻塞 637

C.2.3 测试 638

C.3 事先避免性能问题 639

C.3.1 高性能体系结构的几点提示 639

C.3.2 负载测试 640

C.4 本章小结 640

附录D PHP安装最佳实践 641

D.1 PHP安装简介 641

D.2 优先选择的平台 642

D.3 优先选择的Web服务器 643

D.4 优先选择的数据库 644

D.5 安装过程 645

D.5.1 下载和安装PostgreSQL 645

D.5.2 安装不同的支持类库 647

D.5.3 安装PHP和Apache 647

D.5.4 测试安装 649

D.6 需要使用Windows的情况 649

D.6.1 修改路径 649

D.6.2 外部类库 650

D.6.3 使用PEAR 650

D.7 本章小结 650