欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 教程文档 > PHP > [PHP实战].(PHP.in.Action).(挪)雷勒索,(英)贝克,(美)史夫利特.扫描版[PDF][63.33MB]

[PHP实战].(PHP.in.Action).(挪)雷勒索,(英)贝克,(美)史夫利特.扫描版[PDF][63.33MB]

2019-06-04 576 收藏 0 赞一个 0 真差劲 0 去评论 去下载

内容简介

《PHP实战》内容简介:随着 PHP 5的发布和 Zend框架项目的应用,PHP和敏捷思想、设计模式以及单元测试的联姻成为主流话题。《PHP实战》首先介绍了面向对象设计的原则、模式和技巧,然后讲述了如何在 PHP上利用其语法和特性,处理和实施这些原则、模式和技巧,并应用于 Web编程中遇到的难题上。《PHP实战》适合所有使用 PHP开发 Web应用程序的人员阅读。 编辑推荐 《PHP实战》:近几年,PHP的发展突飞猛进,业已超越Java和ASP。成为目前*流行的Web开发语言。而随着PHP 5的发布和Zend框架的应用,PHP和敏捷思想、设计模式以及单元测试的联姻成为主流话题。 《PHP实战》首先介绍了面向对象设计的原则、模式和技巧,然后讲述了如何运用PHP的语法和特性来解决Web编程中遇到的难题。涵盖了单元测试、重构、用户交互、MVC模式、输入验证、表单处理、数据库连接和查询。以及抽象的持久性对象等内容。通过研读《PHP实战》,读者将对PHP有更深层、更透彻的理解。可以借鉴先进的面向对象实践。极大地提升自己面向对象设计和编程的能力。 理论和实践的完美结合 Web开发人员必读之作 大量PHP核心技巧和*实践

目录

目录第一部分 工具和概念第1章 PHP与现代软件开发 21.1 PHP的作用 21.1.1 PHP流行的原因 31.1.2 克服PHP的局限 51.2 语言、原则和模式 71.2.1 敏捷方法:从蛮干到巧干 71.2.2 PHP 5和软件趋势 81.2.3 面向对象编程进化的规律 81.2.4 设计模式 91.2.5 重构 101.2.6 单元测试和TDD 101.3 小结 13第2章 PHP中的对象 142.1 对象基础 142.1.1 为什么将PHP与Java相比较 152.1.2 对象和类 152.1.3 Hello world 152.1.4 构造函数:创建和初始化对象 162.1.5 继承和关键字extends 182.1.6 继承构造函数 192.2 异常处理 202.2.1 异常的工作原理 202.2.2 何时使用异常与返回代码 222.2.3 创建自己的异常类 232.2.4 用异常替换PHP内置的严重错误 242.2.5 不要过度使用异常 242.3 PHP 4和PHP 5中的对象引用 242.3.1 对象引用的工作原理 252.3.2 对象引用的优势 262.3.3 引用何时没有用处 272.4 方法调用的拦截和类的实例化 272.4.1 什么是方法重载 272.4.2 PHP中的Java式方法重载 272.4.3 面向方面的体验:记录方法调用的日志 282.4.4 自动加载类 302.5 小结 31第3章 有效使用PHP类 323.1 可见性:私有和受保护的方法与变量 323.1.1 对方法可见性的要求 333.1.2 何时使用私有方法 343.1.3 何时使用受保护方法 343.1.4 让实例变量保持private或protected属性 353.1.5 私有变量和受保护变量的存取 363.1.6 两全其美——通过拦截来控制变量 373.1.7 final类和方法 383.2 没有对象的类:类方法、类变量和类常量 393.2.1 类(静态)方法 403.2.2 何时使用类方法 413.2.3 类变量 413.2.4 类常量 423.2.5 PHP中常量的限制 433.3 抽象类和方法(函数) 453.3.1 什么是抽象类和方法 453.3.2 使用抽象类 453.4 类的类型提示 463.4.1 类型提示的作用 463.4.2 何时使用类型提示 473.5 接口 483.5.1 什么是接口 493.5.2 PHP中需要接口吗 493.5.3 用接口让设计更清晰 503.5.4 用接口改善类的类型提示 503.5.5 PHP 5与Java中的接口 513.6 小结 52第4章 理解对象和类 534.1 对象和类的优点 544.1.1 类帮助组织 544.1.2 可以告诉对象要做什么 554.1.3 多态性 554.1.4 对象让代码更易读 564.1.5 类帮助消除重复性代码 594.1.6 可以重用对象和类 604.1.7 避免牵一发而动全身 614.1.8 对象提供类型安全 614.2 好设计的标准 624.2.1 不要混淆结果和含义 644.2.2 透明性 644.2.3 简单设计 644.2.4 一次并且只有一次 654.3 什么是对象 674.3.1 对象来自虚构世界 674.3.2 域对象基础 684.4 小结 70第5章 理解类关系 715.1 继承 715.1.1 将继承作为思考工具 725.1.2 继承重构 735.2 对象组合 775.3 接口 795.3.1 将接口作为思考工具 795.3.2 单继承和多继承 805.4 优先考虑对象组合而不是类继承 805.4.1 避免父类命名含糊 815.4.2 避免继承层次结构过深 815.5 小结 82第6章 面向对象原则 836.1 原则和模式 846.1.1 架构原则或模式 846.1.2 了解面向对象原则 856.2 开放-封闭原则(OCP) 856.2.1 初识OCP 856.2.2 用类替换的情况 866.2.3 OCP在PHP中是如何相关的 886.3 单一职责原则(SRP) 886.3.1 混合职责:模板引擎 896.3.2 一个试验:分离职责 916.3.3 实验是否成功 936.4 依赖倒置原则(DIP) 946.4.1 什么是依赖性 946.4.2 插入接口 966.5 分层设计 966.5.1 “三层”模式及其同属 976.5.2 Web应用程序能否有域层 986.6 小结 99第7章 设计模式 1007.1 策略模式 1017.1.1 使用策略模式的“Hello world” 1017.1.2 策略模式的用处 1037.2 适配器模式 1047.2.1 初学适配器模式 1047.2.2 让一个模板引擎与另一个相像 1057.2.3 具有多个类的适配器模式 1067.2.4 调整为通用接口 1097.3 装饰器模式 1097.3.1 资源装饰器 1107.3.2 装饰与再装饰 1117.4 空对象模式 1137.4.1 混合黑暗的灯和明亮的灯 1147.4.2 空策略对象 1147.5 迭代器模式 1157.5.1 迭代器的工作原理 1157.5.2 使用迭代器的好原因 1167.5.3 迭代器与普通数组 1167.5.4 SPL迭代器 1177.5.5 SPL如何帮助我们解决迭代器和数组间的冲突 1187.6 组合模式 1187.6.1 用组合模式实现菜单 1187.6.2 基本理论 1207.6.3 连贯接口 1217.6.4 递归处理 1217.6.5 我们的方法低效吗 1237.7 小结 123第8章 设计指南:日期和时间处理 1248.1 为何日期和时间处理要面向对象 1248.1.1 更容易,但并非更简单 1258.1.2 面向对象的优势 1258.2 找到正确的抽象 1268.2.1 单个时间表示法:时间点、Instant、DateAndTime 1268.2.2 不同类别的时间范围:期间、持续时间、日期范围、时间间隔 1278.3 高级对象构建 1288.3.1 使用创建方法 1288.3.2 多个构造函数 1298.3.3 使用工厂类 1328.4 大型结构 1338.4.1 包的概念 1338.4.2 命名空间和包 1348.4.3 PHP缺少命名空间支持 1358.4.4 处理名称冲突 1358.5 使用值对象 1408.5.1 对象引用带来的麻烦 1418.5.2 实现值对象 1428.5.3 更改不可变的对象 1428.6 实现基本类 1438.6.1 DateAndTime 1438.6.2 属性和字段 1448.6.3 期间 1498.6.4 时间间隔 1518.7 小结 151第二部分 测试和重构第9章 测试驱动开发 1549.1 过程形成质量 1559.1.1 本示例的需求 1559.1.2 报告测试结果 1569.2 从数据库取数 1579.2.1 基本测试 1579.2.2 第一个真正的测试 1589.2.3 通过测试 1609.2.4 让代码运行 1619.2.5 测试直到确信没有问题 1639.3 数据库插入和更新 1649.3.1 让测试更易读 1659.3.2 红,绿,重构 1669.4 真正的数据库事务处理 1689.4.1 测试事务处理 1689.4.2 实现事务处理 1709.4.3 调试的终结 1719.4.4 测试是工具,不是替代品 1719.5 小结 172第10章 高级测试技术 17310.1 具有持久化功能的联系人管理器 17410.1.1 运行多个测试用例 17410.1.2 测试联系人的持久化 17510.1.3 Contact和ContactFinder类 17710.1.4 setUp()和tearDown() 17810.1.5 最终版本 17910.2 向联系人发送邮件 18010.2.1 设计Mailer类及其测试环境 18010.2.2 手工编写模拟对象 18110.2.3 更为完善的模拟对象 18210.2.4 自顶向下测试 18310.2.5 模拟的局限性 18410.3 虚拟的邮件服务器 18510.3.1 安装fakemail 18610.3.2 邮件测试 18710.3.3 网关作为适配器 19010.4 小结 190第11章 重构Web应用程序 19211.1 真实世界中的重构 19311.1.1 早期重构和后期重构 19311.1.2 重构与重新实现 19411.2 重构基础:可读性和重复性代码 19511.2.1 提高可读性 19511.2.2 消除重复性代码 19711.3 分离标记与程序代码 19911.3.1 分离何以有用 20011.3.2 合宜使用CSS 20011.3.3 清理生成链接的函数 20111.3.4 在SimpleTest中引入模板 20511.4 简化条件表达式 20911.4.1 简单示例 21011.4.2 稍长的示例:身份验证代码 21111.4.3 处理条件HTML 21611.5 从面向过程到面向对象的重构 21711.5.1 测试面向过程代码 21711.5.2 进行重构 21811.6 小结 221第12章 用Web测试控制 22212.1 再看联系人管理器 22312.1.1 样板 22312.1.2 创建Web测试 22512.1.3 用虚拟网页交互通过测试 22612.1.4 一次编写,到处测试 22712.2 可工作的表单 22912.2.1 尝试将联系人保存到数据库中 23012.2.2 创建数据库 23112.2.3 为查找器创建存根 23212.3 质量保证 23412.3.1 让联系人管理器可以进行单元测试 23412.3.2 从用例到验收测试 23612.4 可怕的遗留代码 23812.5 小结 242第三部分 构建Web界面第13章 使用模板管理Web表现层 24413.1 分离表现层和域逻辑 24413.1.1 分离还是不分离…… 24513.1.2 为什么使用模板 24513.2 哪个模板引擎 24713.2.1 普通PHP 24813.2.2 定制语法:Smarty 24913.2.3 属性语言:PHPTAL 25113.3 转换:XSLT 25413.3.1 “XML化”网页 25513.3.2 设置XSLT 25613.3.3 XSLT样式表 25613.3.4 从PHP运行XSLT 25813.4 将逻辑与模板分离 25913.4.1 视图协助器 26013.4.2 交替行颜色 26013.4.3 处理日期和时间格式 26113.4.4 生成层级显示 26313.4.5 防止从模板更新 26513.5 模板和安全 26613.5.1 PHPTAL 26613.5.2 Smarty 26713.5.3 XSLT 26713.6 小结 267第14章 构建复杂网页 26914.1 组合模板(复合视图) 26914.1.1 复合视图:一个或多个设计模式 26914.1.2 复合数据和复合模板 27014.2 实现直观的复合视图 27014.2.1 我们的目标 27014.2.2 使用Smarty 27214.2.3 使用PHPTAL 27314.2.4 使用PHPTAL的页面宏 27414.3 复合视图示例 27514.3.1 制作打印友好的页面 27614.3.2 将现有应用程序集成到复合视图中 27714.3.3 多方显示站点和Fowler的两步视图 27814.4 小结 280第15章 用户交互 28115.1 MVC体系结构 28215.1.1 拨开MVC的迷雾 28315.1.2 定义基本概念 28415.1.3 命令还是操作 28615.1.4 Web MVC不是富客户MVC 28615.2 Web命令模式 28715.2.1 工作原理 28815.2.2 命令标识符 28815.2.3 Web处理程序 28915.2.4 命令执行器 28915.3 保持实现简单 29015.3.1 示例:“原生的”Web应用程序 29015.3.2 引入命令函数 29215.4 小结 294第16章 控制器 29616.1 控制器和请求对象 29716.1.1 基本请求对象 29716.1.2 安全问题 29816.2 使用页面控制器 29916.2.1 简单示例 30016.2.2 从页面控制器选择视图 30116.2.3 让命令可进行单元测试 30216.2.4 避免HTML输出 30316.2.5 使用模板 30316.2.6 重定向问题 30416.3 构建前端控制器 30716.3.1 一个命令一个类的Web处理程序 30716.3.2 命令还需要些什么 30816.3.3 使用命令组 30916.3.4 有多个提交按钮的表单 31016.3.5 用JavaScript生成命令 31116.3.6 用于复合视图的控制器 31116.4 小结 312第17章 输入验证 31417.1 应用程序设计中的输入验证 31517.1.1 验证和应用程序体系结构 31517.1.2 验证策略 31617.1.3 命名表单组件 31717.2 服务器端验证及其问题 31717.2.1 重复问题 31817.2.2 样式问题 31817.2.3 测试和页面导航问题 31917.2.4 我们能解决多少问题 31917.3 客户端验证 32017.3.1 普通的乏味的客户端验证 32017.3.2 逐个验证字段 32117.3.3 你做不到这一点 32317.3.4 表单 32617.4 面向对象的服务器端验证 32717.4.1 规则和验证程序 32817.4.2 安全的请求对象体系结构 32917.4.3 现在验证非常简单 33317.4.4 让其变得简单的类 33417.4.5 使用Specification对象 33617.4.6 知识丰富的设计 33917.4.7 向外观添加验证 34017.5 同步服务器端和客户端验证 34117.5.1 表单生成器 34217.5.2 配置文件 34217.5.3 从客户端验证生成服务器端验证 34317.6 小结 343第18章 表单处理 34518.1 用HTML_QuickForm设计解决方案 34518.1.1 最小需求和设计 34618.1.2 将生成的元素放到HTML表单中 34618.1.3 找到抽象 34718.1.4 更为具体的需求 34818.1.5 选择问题 34918.2 实现解决方案 35018.2.1 包装HTML_QuickForm元素 35018.2.2 输入控件 35118.2.3 哪个类创建表单控件 35418.2.4 验证 35518.2.5 在模板中使用表单对象 35718.2.6 下一步做什么 35918.3 小结 359第19章 数据库连接、抽象和配置 36119.1 数据库抽象 36219.1.1 预处理语句 36219.1.2 面向对象的数据库查询 36419.2 装饰和适配数据库资源对象 36619.2.1 简单的可配置数据库连接 36619.2.2 从结果集制作与SPL兼容的迭代器 36719.3 让数据库连接可用 36919.3.1 单例和类似模式 37019.3.2 服务定位器和注册表 37119.4 小结 373第四部分 数据库和基础结构第20章 对象和SQL 37620.1 对象-关系阻抗不匹配 37620.2 封装和隐藏SQL 37820.2.1 基本示例 37820.2.2 在SQL语句中替换字符串 37920.3 通用化SQL 38320.3.1 列的列表和表名 38320.3.2 使用SQL别名 38620.3.3 生成INSERT、UPDATE和DELETE语句 38620.3.4 查询对象 39020.3.5 适用的设计模式 39120.4 小结 391第21章 数据类设计 39221.1 最简单的方法 39221.1.1 用Finder类检索数据 39321.1.2 主要程序:表数据网关 39521.2 让对象自身持久化 40021.2.1 自我持久化的查找器 40121.2.2 让对象存储自己 40521.3 数据映射器模式 40621.3.1 数据映射器和DAO 40621.3.2 这些模式无甚差别 40821.3.3 模式小结 40921.4 实际使用效果 40921.4.1 模式在典型Web应用程序中的效果 41021.4.2 优化查询 41121.5 小结 411附录A 测试工具和小技巧 412附录B 安全 420参考文献 429

文档截图

QQ截图20190604112316.jpg

[PHP实战].(PHP.in.Action).(挪)雷勒索,(英)贝克,(美)史夫利特.扫描版[PDF][63.33MB]

一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

下载地址
大家评论