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


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

文章插图
深入PHP:面向对象、模式与实践(第3版)【第3版 深入PHP:面向对象、模式与实践】《深入PHP:面向对象、模式与实践(第3版)》是2011年7月人民邮电出版社出版的图书,作者是Matt Zandstra 。
基本介绍书名:深入PHP:面向对象、模式与实践(第3版)
作者:Matt Zandstra
原版名称:PHP objects, patterns, and practice
译者:陈浩[等]译
ISBN:9787115256249
类别:PHP
页数:450
定价:69.00元
出版社:人民邮电出版社
出版时间:2011-7
内容简介赞德斯从事网际网路套用开发十余年,目前是雅虎公司工程师,其编着的《深入PHP:面向对象、模式与实践(第3版)》全面深入地剖析了面向对象的PHP编程与设计 。书中首先介绍了PHP的对象特性(包括抽象类、反射、接口和错误处理等)及可帮助开发人员了解类、对象和方法的对象工具,然后介绍了设计模式 。阐述了模式的概念,展示了如何在PHP中实现一些关键的模式 。并用专门的章节介绍了企业模式和资料库模式 。最后,本书围绕PHP应用程式开发 。详细介绍了一批极为实用的辅助开发工具 。讨论了具有普遍意义的最佳开发实践 。另外,这一版中还新增了闭包、命名空间、持续集成等内容 。本书适合每位PHP开发人员进阶参考 。可帮助他们掌握PHP面向对象设计和开发的精髓,并最终跻身高端PHP开发人员之列 。目录第一部分 介绍第1章 PHP:设计与管理 21.1 问题 21.2 PHP 和其他语言 31.3 关于本书 51.3.1 对象 51.3.2 模式 51.3.3 实践 61.3.4 第3版新增内容 71.4 小结 7第二部分 对象第2章 PHP与对象 102.1 PHP对象的偶然成功 102.1.1 最初:PHP/FI 102.1.2 语法糖:PHP 3 102.1.3 一场静悄悄的革命:PHP 4 112.1.4 拥抱改变:PHP 5 122.2 走向未来:PHP 6 132.3 拥护和疑虑:关于对象的争辩 132.4 小结 14第3章 对象基础 153.1 类和对象 153.1.1 编写第一个类 153.1.2 第一个对象(或两个) 163.2 设定类中的属性 173.3 使用方法 193.4 参数和类型 213.4.1 基本类型 223.4.2 获得提示:对象类型 243.5 继承 263.5.1 继承问题 263.5.2 使用继承 303.5.3 public、private、protected:管理类的访问 353.6 小结 39第4章 高级特性 404.1 静态方法和属性 404.2 常量属性 434.3 抽象类 444.4 接口 464.5 延迟静态绑定:static关键字 474.6 错误处理 504.7 Final 类和方法 564.8 使用拦截器 574.9 析构方法 614.10 使用__clone()複製对象 624.11 定义对象的字元串值 644.12 回调、匿名函式和闭包 654.13 小结 69第5章 对象工具 705.1 PHP和包 705.1.1 PHP包和命名空间 705.1.2 自动载入 785.2 类函式和对象函式 795.2.1 查找类 805.2.2 了解对象或类 815.2.3 了解类中的方法 825.2.4 了解类属性 835.2.5 了解继承 835.2.6 方法调用 845.3 反射API 855.3.1 入门 855.3.2 开始行动 865.3.3 检查类 885.3.4 检查方法 895.3.5 检查方法参数 915.3.6 使用反射API 925.4 小结 95第6章 对象与设计 966.1 代码设计的定义 966.2 面向对象设计和过程式编程 976.2.1 职责 1006.2.2 内聚 1006.2.3 耦合 1016.2.4 正交 1016.3 选择类 1016.4 多态 1026.5 封装 1046.6 忘记细节 1056.7 4个方向标 1056.7.1 代码重複 1066.7.2 类知道的太多 1066.7.3 万能的类 1066.7.4 条件语句 1066.8 UML 1066.8.1 类图 1076.8.2 时序图 1116.9 小结 112第三部分 模式第7章 什幺是设计模式?为何使用它们 1147.1 什幺是设计模式 1147.2 设计模式概览 1167.2.1 命名 1167.2.2 问题 1167.2.3 解决方案 1177.2.4 效果 1177.3 《设计模式》格式 1177.4 为什幺使用设计模式 1187.4.1 一个设计模式定义了一个问题 1187.4.2 一个设计模式定义了一个解决方案 1187.4.3 设计模式是语言无关的 1187.4.4 模式定义了一组辞彙 1187.4.5 模式是经过测试的 1197.4.6 模式是为协作而设计的 1197.4.7 设计模式促进良好设计 1197.5 PHP与设计模式 1207.6 小结 120第8章 模式原则 1218.1 模式的启示 1218.2 组合与继承 1228.2.1 问题 1228.2.2 使用组合 1248.3 解耦 1278.3.1 问题 1278.3.2 降低耦合 1288.4 针对接口编程,而不是针对实现编程 1308.5 变化的概念 1318.6 父子关係 1328.7 模式 1328.7.1 用于生成对象的模式 1338.7.2 用于组织对象和类的模式 1338.7.3 面向任务的模式 1338.7.4 企业模式 1338.7.5 资料库模式 1338.8 小结 133第9章 生成对象 1349.1 生成对象的问题和解决方法 1349.2 单例模式 1389.2.1 问题 1389.2.2 实现 1399.2.3 结果 1419.3 工厂方法模式 1419.3.1 问题 1419.3.2 实现 1439.3.3 结果 1459.4 抽象工厂模式 1469.4.1 问题 1469.4.2 实现 1479.4.3 结果 1489.4.4 原型模式 1509.4.5 问题 1509.4.6 实现 1519.5 某些模式的骗术 1539.6 小结 154第10章 让面向对象编程更加灵活的模式 15510.1 构造可灵活创建对象的类 15510.2 组合模式 15510.2.1 问题 15610.2.2 实现 15810.2.3 效果 16110.2.4 组合模式小结 16410.3 装饰模式 16510.3.1 问题 16510.3.2 实现 16710.3.3 效果 17010.4 外观模式 17010.4.1 问题 17010.4.2 实现 17210.4.3 效果 17210.5 小结 173第11章 执行及描述任务 17411.1 解释器模式 17411.1.1 问题 17411.1.2 实现 17511.1.3 解释器的问题 18211.2 策略模式 18311.2.1 问题 18311.2.2 实现 18411.3 观察者模式 18711.4 访问者模式 19411.4.1 问题 19411.4.2 实现 19511.4.3 访问者模式的问题 19911.5 命令模式 20011.5.1 问题 20011.5.2 实现 20011.6 小结 204第12章 企业模式 20512.1 架构概述 20512.1.1 模式 20512.1.2 应用程式和层 20612.2 企业架构之外的基础模式 20812.2.1 注册表 20812.2.2 实现 20912.3 表现层 21712.3.1 前端控制器 21712.3.2 套用控制器 22712.3.3 页面控制器 23712.3.4 模板视图和视图助手 24212.4 业务逻辑层 24512.4.1 事务脚本 24512.4.2 领域模型 24912.5 小结 252第13章 资料库模式 25313.1 数据层 25313.2 数据映射器 25313.2.1 问题 25413.2.2 实现 25413.2.3 效果 26513.3 标识映射 26613.3.1 问题 26613.3.2 实现 26613.3.3 效果 26913.4 工作单元 26913.4.1 问题 26913.4.2 实现 27013.4.3 效果 27413.4.4 延迟载入 27413.4.5 问题 27413.4.6 实现 27413.4.7 效果 27613.5 领域对象工厂 27613.5.1 问题 27613.5.2 实现 27713.5.3 效果 27813.6 标识对象 27913.6.1 问题 27913.6.2 实现 28013.6.3 效果 28513.7 选择工厂和更新工厂模式 28513.7.1 问题 28513.7.2 实现 28513.7.3 效果 28813.8 数据映射器中剩下些什幺 28913.9 小结 291第四部分 实践第14章 良好和糟糕的实践 29414.1 超越代码 29414.2 借一个轮子 29514.3 合作愉快 29614.4 为你的代码插上双翼 29714.5 文档 29714.6 测试 29814.7 持续集成 29914.8 小结 300第15章 PEAR和Pyrus 30115.1 什幺是PEAR 30115.2 了解Pyrus 30215.3 安装PEAR包 30315.4 使用PEAR包 30615.5 创建自己的PEAR包 31115.5.1 package.xml 31115.5.2 package.xml的组成 31215.5.3 contents元素 31315.5.4 依赖 31615.5.5 使用phprelease进行灵活的自定义安装 31715.5.6 準备发布包 31815.5.7 创建自己的PEAR频道 31815.6 小结 323第16章 用phpDocumentor生成文档 32416.1 为什幺要使用文档 32416.2 安装 32516.3 生成文档 32516.4 DocBlock注释 32716.5 类的文档 32816.6 档案的文档 33016.7 属性的文档 33016.8 方法的文档 33116.9 在文档中创建连结 33316.10 小结 335第17章 使用Subversion进行版本控制 33617.1 为什幺要使用版本控制 33617.2 获得Subversion 33717.3 配置Subversion代码库 33817.4 开始项目 33917.5 更新和提交 34117.6 增加和删除档案及目录 34417.6.1 添加档案 34417.6.2 删除档案 34517.6.3 添加目录 34517.6.4 删除目录 34517.7 标记和导出项目 34517.7.1 标记项目 34517.7.2 导出项目 34617.8 创建项目分支 34717.9 小结 350第18章 使用PHPUnit进行测试 35118.1 功能测试与单元测试 35118.2 手工测试 35218.3 引入PHPUnit 35418.3.1 创建测试用例 35418.3.2 断言方法 35518.3.3测试异常 35618.3.4 运行测试套件 35718.3.5 约束 35818.3.6 模拟与桩 36018.3.7 失败是成功之母 36218.4 编写Web测试 36518.4.1 为测试重构Web套用 36618.4.2 简单的Web测试 36818.4.3 Selenium 37018.5 警告 37418.6 小结 376第19章 用Phing实现项目的自动构建 37719.1 什幺是Phing 37719.2 获取和安装Phing 37819.3 编写build文档 37819.3.1 目标 38019.3.2 属性 38219.3.3 类型 38719.3.4 任务 39119.4 小结 394第五部分 结论第20章 持续集成 39620.1 什幺是持续集成 39620.2 CruiseControl和phpUnderControl 40420.2.1 安装CruiseControl 40420.2.2 安装phpUnderControl 40620.2.3 安装项目 40820.3 小结 418第21章 对象、模式与实践 41921.1 对象 41921.1.1 选择 42021.1.2 封装和委託 42021.1.3 解耦 42021.1.4 复用性 42121.1.5 美学 42121.2 模式 42121.2.1 模式给我们带来了什幺 42221.2.2 模式和设计原则 42221.3 实践 42421.3.1 测试 42421.3.2 文档 42421.3.3 版本控制 42521.3.4 自动构建 42521.3.5 持续集成 42521.3.6 我们还遗漏了什幺 42521.4 小结 426第六部分 附录附录A 参考文献 428附录B 简单的解析器 431