编辑推荐
赞德斯编著的《深入PHP:面向对象、模式与实践(第3版)》全面深入地剖析了面向对象的PHP编程与设计。书中首先介绍了PHP的对象特性(包括抽象类、反射、接口和错误处理等)及可帮助开发人员了解类、对象和方法的对象工具,然后介绍了设计模式。阐述了模式的概念,展示了如何在PHP中实现一些关键的模式。并用专门的章节介绍了企业模式和数据库模式。最后,《深入PHP:面向对象、模式与实践(第3版)》围绕PHP应用程序开发。详细介绍了一批极为实用的辅助开发工具。讨论了具有普遍意义的开发实践。另外,这一版中还新增了闭包、命名空间、持续集成等内容。《深入PHP:面向对象、模式与实践(第3版)》适合每位PHP开发人员进阶参考。可帮助他们掌握PHP面向对象设计和开发的精髓,并最终跻身高端PHP开发人员之列。
内容简介
《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成。
《深入PHP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。作者简介
MartZandstra,Yahoo公司的高级程序员,曾从事过教师等工作,著有SamsTeachYourselfPHPin24Hours等书,还为LinuxMagazine、IBMDDeveloperWorks、Zend.com和bdz-corlsuit.com写过PHP方面的文章。目录
第一部分介绍
第1章PHP:设计与管理
1.1问题
1.2PHP和其他语言
1.3关于《深入PHP:面向对象、模式与实践(第3版)》
1.3.1对象
1.3.2模式
1.3.3实践
1.3.4第3版新增内容
1.4小结
第二部分对象
第2章PHP与对象
2.1PHP对象的偶然成功
2.1.1最初:PHP/FI
2.1.2语法糖:PHP3
2.1.3一场静悄悄的革命:PHP4
2.1.4拥抱改变:PHP5
2.2走向未来:PHP6
2.3拥护和疑虑:关于对象的争辩
2.4小结
第3章对象基础
3.1类和对象
3.1.1编写第一个类
3.1.2第一个对象(或两个)
3.2设置类中的属性
3.3使用方法
3.4参数和类型
3.4.1基本类型
3.4.2获得提示:对象类型
3.5继承
3.5.1继承问题
3.5.2使用继承
3.5.3public、private、protected:管理类的访问
3.6小结
第4章高级特性
4.1静态方法和属性
4.2常量属性
4.3抽象类
4.4接口
4.5延迟静态绑定:static关键字
4.6错误处理
4.7Final类和方法
4.8使用拦截器
4.9析构方法
4.10使用__clone()复制对象
4.11定义对象的字符串值
4.12回调、匿名函数和闭包
4.13小结
第5章对象工具
5.1PHP和包
5.1.1PHP包和命名空间
5.1.2自动加载
5.2类函数和对象函数
5.2.1查找类
5.2.2了解对象或类
5.2.3了解类中的方法
5.2.4了解类属性
5.2.5了解继承
5.2.6方法调用
5.3反射API
5.3.1入门
5.3.2开始行动
5.3.3检查类
5.3.4检查方法
5.3.5检查方法参数
5.3.6使用反射API
5.4小结
第6章对象与设计
6.1代码设计的定义
6.2面向对象设计和过程式编程
6.2.1职责
6.2.2内聚
6.2.3耦合
6.2.4正交
6.3选择类
6.4多态
6.5封装
6.6忘记细节
6.74个方向标
6.7.1代码重复
6.7.2类知道的太多
6.7.3万能的类
6.7.4条件语句
6.8UML
6.8.1类图
6.8.2时序图
6.9小结
第三部分模式
第7章什么是设计模式?为何使用它们
7.1什么是设计模式
7.2设计模式概览
7.2.1命名
7.2.2问题
7.2.3解决方案
7.2.4效果
7.3《设计模式》格式
7.4为什么使用设计模式
7.4.1一个设计模式定义了一个问题
7.4.2一个设计模式定义了一个解决方案
7.4.3设计模式是语言无关的
7.4.4模式定义了一组词汇
7.4.5模式是经过测试的
7.4.6模式是为协作而设计的
7.4.7设计模式促进良好设计
7.5PHP与设计模式
7.6小结
第8章模式原则
8.1模式的启示
8.2组合与继承
8.2.1问题
8.2.2使用组合
8.3解耦
8.3.1问题
8.3.2降低耦合
8.4针对接口编程,而不是针对实现编程
8.5变化的概念
8.6父子关系
8.7模式
8.7.1用于生成对象的模式
8.7.2用于组织对象和类的模式
8.7.3面向任务的模式
8.7.4企业模式
8.7.5数据库模式
8.8小结
第9章生成对象
9.1生成对象的问题和解决方法
9.2单例模式
9.2.1问题
9.2.2实现
9.2.3结果
9.3工厂方法模式
9.3.1问题
9.3.2实现
9.3.3结果
9.4抽象工厂模式
9.4.1问题
9.4.2实现
9.4.3结果
9.4.4原型模式
9.4.5问题
9.4.6实现
9.5某些模式的骗术
9.6小结
第10章让面向对象编程更加灵活的模式
10.1构造可灵活创建对象的类
10.2组合模式
10.2.1问题
10.2.2实现
10.2.3效果
10.2.4组合模式小结
10.3装饰模式
10.3.1问题
10.3.2实现
10.3.3效果
10.4外观模式
10.4.1问题
10.4.2实现
10.4.3效果
10.5小结
第11章执行及描述任务
11.1解释器模式
11.1.1问题
11.1.2实现
11.1.3解释器的问题
11.2策略模式
11.2.1问题
11.2.2实现
11.3观察者模式
11.4访问者模式
11.4.1问题
11.4.2实现
11.4.3访问者模式的问题
11.5命令模式
11.5.1问题
11.5.2实现
11.6小结
第12章企业模式
12.1架构概述
12.1.1模式
12.1.2应用程序和层
12.2企业架构之外的基础模式
12.2.1注册表
12.2.2实现
12.3表现层
12.3.1前端控制器
12.3.2应用控制器
12.3.3页面控制器
12.3.4模板视图和视图助手
12.4业务逻辑层
12.4.1事务脚本
12.4.2领域模型
12.5小结
第13章数据库模式
13.1数据层
13.2数据映射器
13.2.1问题
13.2.2实现
13.2.3效果
13.3标识映射
13.3.1问题
13.3.2实现
13.3.3效果
13.4工作单元
13.4.1问题
13.4.2实现
13.4.3效果
13.4.4延迟加载
13.4.5问题
13.4.6实现
13.4.7效果
13.5领域对象工厂
13.5.1问题
13.5.2实现
13.5.3效果
13.6标识对象
13.6.1问题
13.6.2实现
13.6.3效果
13.7选择工厂和更新工厂模式
13.7.1问题
13.7.2实现
13.7.3效果
13.8数据映射器中剩下些什么
13.9小结
第四部分实践
第14章良好和糟糕的实践
14.1超越代码
14.2借一个轮子
14.3合作愉快
14.4为你的代码插上双翼
14.5文档
14.6测试
14.7持续集成
14.8小结
第15章PEAR和Pyrus
15.1什么是PEAR
15.2了解Pyrus
15.3安装PEAR包
15.4使用PEAR包
15.5创建自己的PEAR包
15.5.1package.xml
15.5.2package.xml的组成
15.5.3contents元素
15.5.4依赖
15.5.5使用phprelease进行灵活的自定义安装
15.5.6准备发布包
15.5.7创建自己的PEAR频道
15.6小结
第16章用phpDocumentor生成文档
16.1为什么要使用文档
16.2安装
16.3生成文档
16.4DocBlock注释
16.5类的文档
16.6文件的文档
16.7属性的文档
16.8方法的文档
16.9在文档中创建链接
16.10小结
第17章使用Subversion进行版本控制
17.1为什么要使用版本控制
17.2获得Subversion
17.3配置Subversion代码库
17.4开始项目
17.5更新和提交
17.6增加和删除文件及目录
17.6.1添加文件
17.6.2删除文件
17.6.3添加目录
17.6.4删除目录
17.7标记和导出项目
17.7.1标记项目
17.7.2导出项目
17.8创建项目分支
17.9小结
第18章使用PHPUnit进行测试
18.1功能测试与单元测试
18.2手工测试
18.3引入PHPUnit
18.3.1创建测试用例
18.3.2断言方法
18.3.3测试异常
18.3.4运行测试套件
18.3.5约束
18.3.6模拟与桩
18.3.7失败是成功之母
18.4编写Web测试
18.4.1为测试重构Web应用
18.4.2简单的Web测试
18.4.3Selenium
18.5警告
18.6小结
第19章用Phing实现项目的自动构建
19.1什么是Phing
19.2获取和安装Phing
19.3编写build文档
19.3.1目标
19.3.2属性
19.3.3类型
19.3.4任务
19.4小结
第五部分结论
第20章持续集成
20.1什么是持续集成
20.2CruiseControl和phpUnderControl
20.2.1安装CruiseControl
20.2.2安装phpUnderControl
20.2.3安装项目
20.3小结
第21章对象、模式与实践
21.1对象
21.1.1选择
21.1.2封装和委托
21.1.3解耦
21.1.4复用性
21.1.5美学
21.2模式
21.2.1模式给我们带来了什么
21.2.2模式和设计原则
21.3实践
21.3.1测试
21.3.2文档
21.3.3版本控制
21.3.4自动构建
21.3.5持续集成
21.3.6我们还遗漏了什么
21.4小结
第六部分附录
附录A参考文献
附录B简单的解析器