《图灵程序设计丛书 深入PHP 面向对象、模式与实践 第5版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:杨文轩译;温雪责任编辑;(英)马特·赞德斯彻
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2019
  • ISBN:9787115512338
  • 页数:510 页
图书介绍:本书是PHP经典图书升级版,它既是一本关于面向对象设计与编程的书,也是一本关于如何使用工具管理PHP代码(从协作到部署)的书。第5版重写了Composer和Packagist库的相关内容,并增加了关于Git版本控制的篇幅。示例代码全面更新,符合PSR-1和PSR-2标准。阅读本书能够帮你构建实现既定目标且易于协同开发的系统,并让你的代码优雅、简洁且易于理解。

第一部分 对象 2

第1章 PHP:设计和管理 2

1.1问题 2

1.2PHP与其他语言 3

1.3关于本书 5

1.3.1对象 5

1.3.2模式 6

1.3.3实践 6

1.3.4第5版新增内容 7

1.4小结 8

第2章 PHP和对象 9

2.1PHP对象的偶然成功 9

2.1.1起源:PHP/FI 9

2.1.2语法糖:PHP3 9

2.1.3一场静悄悄的革命:PHP4 10

2.1.4拥抱变化:PHP5 11

2.1.5迎头追赶:PHP7 12

2.2拥护和顾虑:关于对象的争辩 12

2.3小结 13

第3章 对象基础 14

3.1类和对象 14

3.1.1第一个类 14

3.1.2一个(或两个)对象 15

3.2设置类中的属性 16

3.3使用方法 18

3.4参数和类型 21

3.4.1基本类型 21

3.4.2接受提示:对象类型 24

3.5继承 28

3.5.1继承问题 28

3.5.2使用继承 33

3.5.3public、private和protected:管理类的访问 38

3.6小结 43

第4章 高级特性 44

4.1静态方法和属性 44

4.2常量属性 47

4.3抽象类 48

4.4接口 50

4.5trait 52

4.5.1trait可以解决的问题 52

4.5.2定义和使用trait 53

4.5.3使用多个trait 54

4.5.4组合使用trait与接口 55

4.5.5通过insteadof管理方法名冲突 56

4.5.6使用别名重写trait的方法 57

4.5.7在trait中使用静态方法 58

4.5.8访问宿主类的属性 59

4.5.9在trait中定义抽象方法 59

4.5.10改变trait中方法的访问权限 60

4.6延迟静态绑定:static关键字 61

4.7错误处理 65

4.8final类和方法 73

4.9内部错误类 74

4.10使用拦截器 75

4.11定义析构方法 81

4.12使用_clone()复制对象 82

4.13定义对象的字符串值 85

4.14回调、匿名函数和闭包 86

4.15匿名类 90

4.16小结 92

第5章 对象工具 93

5.1PHP和包 93

5.1.1PHP包和命名空间 93

5.1.2自动加载 101

5.2类函数和对象函数 105

5.2.1查找类 106

5.2.2检查对象或类 106

5.2.3得到指向类的完全限定的字符串引用 107

5.2.4检查方法 108

5.2.5检查类属性 110

5.2.6检查继承 110

5.2.7方法调用 111

5.3反射API 112

5.3.1入门 112

5.3.2是时候大干一场了 113

5.3.3检查类 115

5.3.4检查方法 117

5.3.5检查方法参数 118

5.3.6使用反射API 120

5.4小结 123

第6章 对象与设计 124

6.1定义代码设计 124

6.2面向对象编程与面向过程编程 125

6.2.1职责 129

6.2.2内聚 129

6.2.3耦合 129

6.2.4正交 129

6.3选择类 130

6.4多态 131

6.5封装 132

6.6忘记细节 133

6.7四个方向标 133

6.7.1代码重复 134

6.7.2类知道太多 134

6.7.3万能的类 134

6.7.4条件语句 134

6.8UML 134

6.8.1类图 135

6.8.2序列图 140

6.9小结 142

第二部分 模式 144

第7章 什么是设计模式,为什么要使用设计模式 144

7.1什么是设计模式 144

7.2设计模式概要 146

7.2.1名称 146

7.2.2问题 146

7.2.3解决方案 147

7.2.4效果 147

7.3《设计模式》的格式 147

7.4为什么使用设计模式 148

7.4.1设计模式定义了问题 148

7.4.2设计模式定义了解决方案 148

7.4.3设计模式与编程语言无关 148

7.4.4模式定义了一组词汇 148

7.4.5模式是经过测试的 149

7.4.6模式为协作而设计 149

7.4.7设计模式促进优秀设计 149

7.4.8流行的框架都使用了设计模式 150

7.5PHP与设计模式 150

7.6小结 150

第8章 一些模式原则 151

8.1模式的启示 151

8.2组合与继承 152

8.2.1问题 152

8.2.2使用组合 155

8.3解耦 157

8.3.1问题 157

8.3.2解耦 159

8.4针对接口编程,而不是针对实现编程 161

8.5概念在变化 162

8.6不要盲从模式 162

8.7模式 163

8.7.1用于生成对象的模式 163

8.7.2用于组织对象和类的模式 163

8.7.3面向任务的模式 163

8.7.4企业设计模式 163

8.7.5数据库模式 163

8.8小结 163

第9章 生成对象 164

9.1生成对象的问题和解决方案 164

9.2单例模式 168

9.2.1问题 169

9.2.2实现 169

9.2.3效果 171

9.3工厂方法模式 172

9.3.1问题 172

9.3.2实现 175

9.3.3效果 177

9.4抽象工厂模式 177

9.4.1问题 177

9.4.2实现 178

9.4.3效果 180

9.5原型模式 181

9.5.1问题 182

9.5.2实现 183

9.6推向边缘:服务定位器 186

9.7完全隔离:依赖注入 187

9.7.1问题 187

9.7.2实现 188

9.7.3效果 191

9.8小结 191

第10章 使面向对象编程更加灵活的模式 192

10.1构造可灵活创建对象的类 192

10.2组合模式 192

10.2.1问题 193

10.2.2实现 195

10.2.3效果 199

10.2.4组合模式小结 202

10.3装饰器模式 202

10.3.1问题 202

10.3.2实现 205

10.3.3效果 209

10.4外观模式 209

10.4.1问题 209

10.4.2实现 211

10.4.3效果 211

10.5小结 212

第11章 执行及描述任务 213

11.1解释器模式 213

11.1.1问题 213

11.1.2实现 214

11.1.3解释器模式的问题 222

11.2策略模式 222

11.2.1问题 222

11.2.2实现 223

11.3观察者模式 227

11.4访问者模式 235

11.4.1问题 235

11.4.2实现 236

11.4.3访问者模式的问题 241

11.5命令模式 242

11.5.1问题 242

11.5.2实现 242

11.6空对象模式 247

11.6.1问题 247

11.6.2实现 249

11.7小结 251

第12章 企业设计模式 252

12.1架构概述 252

12.1.1模式 252

12.1.2应用与分层 253

12.2企业架构外的基础模式 255

12.2.1注册表 255

12.2.2实现 256

12.2.3效果 260

12.3表示层 260

12.3.1前端控制器 261

12.3.2应用控制器 271

12.3.3页面控制器 283

12.3.4模板视图和视图助手 288

12.4业务逻辑层 291

12.4.1事务脚本 291

12.4.2领域模型 295

12.5小结 298

第13章 数据库设计模式 299

13.1数据层 299

13.2数据映射器 299

13.2.1问题 300

13.2.2实现 300

13.2.3效果 313

13.3标识映射 315

13.3.1问题 315

13.3.2实现 315

13.3.3效果 318

13.4工作单元 319

13.4.1问题 319

13.4.2实现 319

13.4.3效果 323

13.5延迟加载 323

13.5.1问题 323

13.5.2实现 324

13.5.3效果 326

13.6领域对象工厂 326

13.6.1问题 326

13.6.2实现 326

13.6.3效果 327

13.7标识对象 329

13.7.1问题 329

13.7.2实现 330

13.7.3效果 335

13.8选择工厂与更新工厂模式 335

13.8.1问题 336

13.8.2实现 336

13.8.3效果 340

13.9现在映射器中还剩下什么 340

13.10小结 342

第三部分 实践 346

第14章 优秀(以及糟糕)的实践 346

14.1超越代码 346

14.2借轮子 347

14.3合作愉快 348

14.4为代码插上翅膀 349

14.5标准 350

14.6Vagrant 350

14.7测试 351

14.8持续集成 351

14.9小结 352

第15章 PHP标准 353

15.1为什么需要标准 353

15.2什么是PSR 354

15.2.1为什么选择PSR 354

15.2.2哪些人需要PSR 355

15.3编码风格 355

15.3.1PSR-1基础编码规范 356

15.3.2PSR-2编码风格规范 358

15.3.3检查和修改代码 360

15.4PSR-4自动加载规范 362

15.5小结 365

第16章 通过Composer使用和创建组件 366

16.1什么是Composer 366

16.2安装Composer 367

16.3安装一个(组)包 367

16.3.1通过命令行安装包 368

16.3.2版本 368

16.3.3require-dev元素 369

16.4Composer与自动加载 370

16.5创建自己的包 371

16.5.1添加包信息 371

16.5.2平台软件包 372

16.6通过Packagist分发包 373

16.7私有包 376

16.8小结 377

第17章 用Git进行版本控制 378

17.1为什么进行版本控制 378

17.2安装Git 379

17.3使用在线Git代码库 380

17.4配置Git服务器 382

17.5启动项目 384

17.6更新与提交 387

17.7文件和目录的添加与移除 390

17.7.1添加文件 390

17.7.2删除文件 390

17.7.3添加目录 391

17.7.4删除目录 391

17.8标记一次发布 392

17.9创建分支 393

17.10小结 398

第18章 使用PHPUnit进行测试 399

18.1功能测试与单元测试 399

18.2手动测试 400

18.3引入PHPUnit 402

18.3.1创建测试用例 402

18.3.2断言方法 405

18.3.3测试异常 406

18.3.4运行测试套件 407

18.3.5约束 407

18.3.6mock和stub 409

18.3.7失败是成功之母 412

18.4编写Web测试 415

18.4.1为测试重构Web应用 415

18.4.2简单的Web测试 417

18.4.3引入Selenium 419

18.5警告 424

18.6小结 426

第19章 使用Phing进行自动化构建 427

19.1Phing是什么 427

19.2获取和安装Phing 428

19.3编写构建文档 428

19.3.1目标 430

19.3.2属性 432

19.3.3类型 438

19.3.4任务 443

19.4小结 446

第20章 Vagrant 447

20.1问题 447

20.2设置 448

20.3挂载本地目录到Vagrant镜像 450

20.4配置 451

20.4.1设置Web服务器 452

20.4.2设置MySQL 452

20.4.3配置主机名 453

20.5结束语 455

20.6小结 455

第21章 持续集成 456

21.1什么是持续集成 456

21.1.1准备一个持续集成项目 458

21.1.2安装Jenkins插件 467

21.1.3设置Git公钥 468

21.1.4创建新项目 469

21.1.5运行第一次构建 472

21.1.6配置报告 472

21.1.7触发构建 474

21.2小结 476

第22章 对象、模式和实践 477

22.1对象 477

22.1.1选择 478

22.1.2封装与委托 478

22.1.3解耦 478

22.1.4可复用性 479

22.1.5美学 479

22.2模式 479

22.2.1模式给我们带来了什么 480

22.2.2模式与设计原则 480

22.3实践 482

22.3.1测试 482

22.3.2标准 483

22.3.3版本控制 483

22.3.4自动构建 483

22.3.5持续集成 484

22.3.6我们遗漏了什么 484

22.4小结 485

附录A 参考文献 486

附录B 一个简单的解析器 488