《PHP核心技术与最佳实践》是一本致力于为希望成为中高级PHP程序员的读者提供高效而有针对性指导的经典著作。系统归纳和深刻解读了PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和最佳实践。全书分为5个部分:第一部分(1~2章)从不同的角度阐述了面向对象软件设计思想的核心概念、技术和原则,分析了面向对象的特性、设计模式的理念,指出了如何设计低耦合、高可扩展性的软件,等等;第二部分(3~6章)详细讲解了PHP中正则表达式的规范和使用技巧,PHP网络编程的原理、方法、技巧和一些重要的操作,PDO、数据库应用优化,数据库设计和MySQL的高级应用,PHP扩展引擎的原理与实践;第三部分(第7章)拨云见日,围绕PHP扩展开发进行了细致而深入的探讨,解析了PHP的底层实现和Zend虚拟机API,并用PHP扩展开发的实例带领读者走进PHP的底层世界,旨在让读者对PHP性能优化、底层原理进行深入的理解。第四部分(8~11章)重点讨论了缓存的设计、Memcached的原理与实践、NoSQL数据库Redis源码分析与应用实践、高性能PHP网站的架构和设计等内容;第五部分(12~14章)详细讲解了PHP代码的调试和测试、Hash算法和数据库的实现,以及PHP的编码规范,旨在帮助读者提高开发效率,养成良好编程习惯。
前言
第1章 面向对象思想的核心概念
1.1 面向对象的“形”与“本”
1.1.1 对象的“形”
1.1.2 对象的“本”
1.1.3 对象与数组
1.1.4 对象与类
1.2 魔术方法的应用
1.2.1 set和get方法
1.2.2 call和callStatic方法
1.2.3 toString方法
1.3 继承与多态
1.3.1 类的组合与继承
1.3.2 各种语言中的多态
1.4 面向接口编程
1.4.1 接口的作用
1.4.2 对PHP接口的思考
1.5 反射
1.5.1 如何使用反射API
1.5.2 反射有什么作用
1.6 异常和错误处理
1.6.1 如何使用异常处理机制
1.6.2 怎样看PHP的异常
1.6.3 PHP中的错误级别
1.6.4 PHP中的错误处理机制
1.7 本章小结
第2章 面向对象的设计原则
2.1 面向对象设计的五大原则
2.1.1 单一职责原则
2.1.2 接口隔离原则
2.1.3 开放-封闭原则
2.1.4 替换原则
2.1.5 依赖倒置原则
2.2 一个面向对象留言本的实例
2.3 面向对象的思考
2.4 本章小结
第3章 正则表达式基础与应用
3.1 认识正则表达式
3.1.1 PHP中的正则函数
3.1.2 正则表达式的组成
3.1.3 测试工具的使用
3.2 正则表达式中的元字符
3.2.1 什么是元字符
3.2.2 起始和结束元字符
3.2.3 点号
3.2.4 量词
3.3 正则表达式匹配规则
3.3.1 字符组
3.3.2 转义
3.3.3 反义
3.3.4 分支
3.3.5 分组
3.3.6 反向引用
3.3.7 环视
3.3.8 贪婪懒惰匹配模式
3.4 构造正则表达式
3.4.1 正则表达式的逻辑关系
3.4.2 运算符优先级
3.4.3 正则表达式的常用模式
3.5 正则在实际开发中的应用
3.5.1 移动手机校验
3.5.2 匹配E-mail地址
3.5.3 转义在数据安全中的应用
3.5.4 URL重写与搜索引擎优化
3.5.5 删除文件中的空行和注释
3.6 正则表达式的效率与优化
3.7 本章小结
第4章 PHP网络技术及应用
4.1 HTTP协议详解
4.1.1 HTTP协议与SPDY协议
4.1.2 HTTP协议如何工作
4.1.3 HTTP应用:模拟灌水机器人
4.1.4 垃圾信息防御措施
4.2 抓包工具
4.2.1 抓包工具分类
4.2.2 Fiddler功能与原理
4.2.3 安装Fiddler
4.2.4 Fiddler基本界面
4.2.5 使用Fiddler进行HTTP断点调试
4.3 Socket进程通信机制及应用
4.3.1 进程通信相关概念
4.3.2 Socket演示:实现服务器端与客户端的交互
4.3.3 Socket函数原型
4.3.4 PHP中的Socket函数
4.3.5 Socket交互应用:使用Socket抓取数据
4.4 cURL工具及应用
4.4.1 建立cURL请求的基本步骤
4.4.2 检查cURL错误和获取返回信息
4.4.3 在cURL中伪造头信息
4.4.4 在cURL中用POST方法发送数据
4.4.5 使用cURL上传文件
4.4.6 cURL批处理
4.4.7 cURL设置项
4.4.8 网络应用:使用cURL抓取腾讯微博
4.5 简单邮件传输协议SMTP
4.5.1 SMTP协议如何工作
4.5.2 SMTP协议常用命令
4.5.3 SMTP协议应用:使用Socket发送邮件
4.6 WebService的前世今生
4.6.1 WebService简介
4.6.2 认识PHPRPC协议
4.6.3 Web服务的实现模式
4.6.4 简单对象访问协议SOAP
4.6.5 调试工具soapUI
4.7 Cookie详解
4.7.1 Cookie的基本概念及设置
4.7.2 PHP和JavaScript对Cookie的操作
4.7.3 Cookie存储机制及应用
4.7.4 Cookie跨域与P3P协议
4.7.5 本地存储localStorage
4.8 Session详解
4.8.1 Session的基本概念及设置
4.8.2 Session的工作原理
4.8.3 Session入库
4.8.4 Cookie与Session问答
4.9 本章小结
第5章 PHP与数据库基础
5.1 什么是PDO
5.1.1 PDO预定义类
5.1.2 如何使用PDO
5.1.3 PDO参数绑定与预编译
5.1.4 PDO事务处理
5.1.5 PDO的效率问题
5.2 数据库应用优化
5.2.1 基本语句优化10个原则
5.2.2 索引与性能分析
5.2.3 服务器和配置的优化
5.2.4 MySQL瓶颈及应对措施
5.3 数据库设计
5.3.1 范式与反范式
5.3.2 数据库分区
5.3.3 分表的应用
5.4 MySQL的高级应用
5.4.1 MySQL自增长序列
5.4.2 MySQL视图
5.4.3 MySQL存储过程和事件调度
5.4.4 用MySQL模拟消息队列
5.4.5 SQL注入漏洞与防范
5.5 本章小结
第6章 PHP模板引擎的原理与实践
6.1 代码分层的思想
6.2 实现一个简单的模板引擎骨架
6.2.1 搭建模板引擎基础类骨架
6.2.2 编译类骨架
6.2.3 测试模板引擎
6.3 模板引擎的编译
6.3.1 实现变量标签
6.3.2 实现foreach标签
6.3.3 实现if…else标签
6.3.4 对PHP原生语法的支持
6.4 完善模板引擎
6.4.1 模板缓存机制的实现
6.4.2 调试和缓存清理
6.4.3 如何使用模板
6.5 常用模板引擎
6.5.1 Discuz模板引擎
6.5.2 Smarty模板引擎
6.5.3 DedeCms模板引擎
6.5.4 Blitz模板引擎
6.5.5 模板引擎的一些思考
6.6 本章小结
第7章 PHP扩展开发
7.1 为什么要开发PHP扩展
7.2 搭建PHP扩展框架
7.2.1 PHP源代码目录
7.2.2 ext_skel工具
7.2.3 Windows平台环境配置
7.2.4 Linux平台环境配置
7.2.5 PHP的生命周期
7.3 PHP内核中的变量
7.3.1 PHP变量在内核中的存储方式
7.3.2 PHP内核变量访问宏
7.3.3 引用计数器与写时复制
7.4 PHP内核中的HashTable分析
7.4.1 PHP内核HashTable的数据结构
7.4.2 HashTable的代码实现
7.5 Zend API详解与扩展编写
7.5.1 什么是Zend引擎
7.5.2 Zend引擎内存管理
7.5.3 PHP扩展的架构
7.5.4 接收用户传递的参数
7.5.5 在PHP扩展中创建变量
7.5.6 在PHP扩展中为变量赋值
7.5.7 错误和输出API
7.5.8 运行时信息函数
7.5.9 调用用户自定义函数
7.5.10 PHP配置项
7.5.11 创建常量的宏
7.6 编写一个完整的扩展
7.6.1 链表结构的实现
7.6.2 创建PHP扩展框架
7.6.3 编写代码
7.6.4 编译安装扩展
7.6.5 测试扩展
7.7 本章小结
第8章 缓存详解
8.1 认识缓存
8.1.1 为什么使用缓存
8.1.2 命中率
8.1.3 缓存更新策略
8.1.4 缓存最大数据量
8.2 文件缓存
8.2.1 文件缓存机制
8.2.2 文件缓存开源产品Secache
8.3 Opcode缓存
8.3.1 eAccelerator下载及使用
8.3.2 如何查看Opcode
8.4 客户端缓存
8.4.1 客户端缓存规则
8.4.2 HTTP协议中的缓存使用
8.4.3 HTTP缓存实例
8.4.4 HTML 5中的Application Cache
8.5 Web服务器缓存
8.5.1 Apache缓存
8.5.2 Nginx缓存
8.6 本章小结
第9章 Memcached使用与实践
9.1 为什么要用Memcached
9.2 Memcached的安装及使用
9.2.1 安装Memcached服务器
9.2.2 安装Memcached客户端
9.2.3 使用memcache扩展访问Memcached服务器
9.2.4 使用Memcached加速Web应用
9.3 深入了解Memcached
9.3.1 Memcached如何支持高并发
9.3.2 使用Slab分配算法保存数据
9.3.3 删除过期item
9.3.4 使用LRU算法淘汰数据
9.3.5 Memcached多线程模型
9.4 Memcached分布式布置方案
9.4.1 普通Hash分布
9.4.2 一致性Hash分布
9.4.3 一致性Hash分布算法实例
9.5 本章小结
第10章 Redis使用与实践
10.1 Redis的安装及使用
10.1.1 Redis安装步骤
10.1.2 修改Redis配置文件
10.1.3 运行Redis服务器
10.1.4 key相关命令
10.1.5 Redis支持的数据类型
10.1.6 Redis排序命令详解
10.2 事务处理
10.2.1 事务处理原理
10.2.2 事务处理实现
10.3 持久化
10.3.1 内存快照
10.3.2 日志追加
10.4 主从同步
10.4.1 Redis主从同步原理
10.4.2 Slave端的工作流程
10.4.3 Master端的工作流程
10.5 虚拟内存
10.5.1 配置文件信息
10.5.2 开启VM的后台操作
10.5.3 Redis Object和VM Pointer
10.5.4 交换过程
10.5.5 阻塞式VM
10.5.6 非阻塞式VM
10.6 扩展库phpredis安装及使用
10.7 Redis应用实践
10.7.1 使用消息队列发布微博
10.7.2 Redis替代文件存储Session
10.8 深入了解Redis内核
10.8.1 内存淘汰
10.8.2 对象引用计数器
10.8.3 自动关闭超时连接
10.8.4 清除过期数据
10.9 本章小结
第11章 高性能网站架构方案
11.1 如何优化网站响应时间
11.1.1 吞吐率
11.1.2 压力测试
11.1.3 持久连接
11.2 MySQL响应速度提高方案:HandlerSocket
11.2.1 HandlerSocket工作原理
11.2.2 HandlerSocket安装和配置
11.2.3 PHP-HandlerSocket性能测试
11.3 MySQL稳定性提高方案:主从复制
11.3.1 主从复制工作原理
11.3.2 主从复制配置
11.3.3 连接主从服务器
11.4 Web应用加速方案:Varnish
11.4.1 传统代理与反向代理
11.4.2 Varnish安装和配置
11.4.3 Varnish性能测试
11.4.4 修改缓存规则
11.4.5 监控Varnish运行状态
11.5 异步计算方案:Gearman
11.5.1 Gearman工作原理
11.5.2 安装Gearman和PHP扩展
11.5.3 使用Gearman异步发送邮件
11.6 本章小结
第12章 代码调试和测试
12.1 调试PHP代码
12.1.1 PHP调试函数
12.1.2 断点调试与变量跟踪工具Xdebug
12.2 前端调试
12.2.1 Firebug调试API
12.2.2 使用Firebug调试DOM结构
12.2.3 使用Firebug调试JavaScript
12.2.4 使用Fiddler调试远程服务器上的文件
12.3 日志管理
12.3.1 PHP日志
12.3.2 Apache服务器日志
12.3.3 MySQL日志
12.4 代码性能测试技术
12.4.1 时间点测试
12.4.2 文件查看工具WinCacheGrind
12.4.3 性能测试注意事项
12.5 单元测试
12.5.1 单元测试框架PHPUnit的安装
12.5.2 结合NetBeans使用PHPUnit进行单元测试
12.5.3 PHPUnit中的断言函数
12.5.4 PHPUnit常用方法
12.5.5 PHPUnit常用注解
12.6 压力测试
12.6.1 使用JMeter压力测试HTTP
12.6.2 压力测试MySQL
12.6.3 JMeter+Badboy组合测试
12.7 本章小结
第13章 Hash算法与数据库实现
13.1 Hash函数
13.2 Hash算法
13.2.1 直接取余法
13.2.2 乘积取整法
13.2.3 经典Hash算法Times33
13.3 Hash表
13.3.1 Hash表结构
13.3.2 使用PHP实现Hash表
13.3.3 Hash表冲突
13.3.4 拉链法解决冲突
13.4 一个小型数据库的实现
13.4.1 pack函数的用法
13.4.2 unpack函数的用法
13.4.3 索引文件和数据文件
13.4.4 数据库接口方法
13.4.5 源代码解析
13.4.6 测试代码
13.5 本章小结
第14章 PHP编码规范
14.1 文件格式
14.1.1 文件标记
14.1.2 文件和目录命名
14.1.3 文件目录结构
14.2 命名规范
14.2.1 变量命名
14.2.2 类及接口命名
14.2.3 数据库命名
14.2.4 习惯与约定
14.3 注释规范
14.3.1 程序注释
14.3.2 文件注释
14.3.3 类接口注释
14.3.4 方法和函数注释
14.3.5 标注的使用
14.4 代码风格
14.4.1 缩进和空格
14.4.2 语句断行
14.4.3 更好的习惯
14.5 本章小结
在3G蜂窝系统的空中接口方面备受高度认可的《WCDMA技术与系统设计》一书,经过了再次全面的修订和更新,第3版涵盖了3GPPRelease6
《分布式系统与一致性》内容简介:一致性是非常重要的分布式技术。众所周知,分布式系统有很多特性,如可用性、可靠性等,这些特性
《CSSWeb站点设计手册》针对初、中级读者,特别是针对入门级读者。书中包含了经过精心筛选的学习CSS必须要了解和掌握的所有内容。
《华为内训(新版)》内容简介:翻开《华为内训》,您将步入一个炫目恢宏的商业世界,由此洞悉华为内部独特的管理经营机制。作为世
《西线无战事》内容简介:第一次世界大战开始后不久,保罗和同学们怀着英雄主义的理想,志愿报名参军。经过短暂的训练后,他们被送
《丹尼尔·希利斯讲计算机》内容简介:虽然计算机技术及应用以及编程技术都取得了巨大进步,对社会产生的影响也远远超出了预言家的
《西方绘画大师经典佳作:塞尚》内容简介:印象主义画派是19世纪最重要的艺术流派之一,其将光与色彩的科学观念引入到绘画中,对当
虚拟现实技术 本书特色 陈怀友、张天驰、张菁编著的《虚拟现实技术(中文版计算机科学与技术学科研究生系列教材)》对虚拟现实技术及应用进行详细的探讨,运用多个典型的...
《一生里的某一刻》内容简介:在荒原上种花,在痛楚上绽放欢笑。一边跌倒一边前行的张春关于爱与生命的勇气之书,李松蔚、陈海贤、
《Web GIS从基础到开发实践》内容简介:本书适合政府、企业相关部门的GIS研究与开发人员,以及高等院校地理学、地理信息系统、房地
吴伟定,网名Windear,首届中文搜索引擎优化(SEO)大赛三等奖得主,擅长于品牌操作以及各种网络营销手段。现任中赫技术投资控股有
软件调试修炼之道 本书特色 Paul出色阐释了调试各个阶段所涉及的技术、思维、心理等方面的问题:首先要预防缺陷发生。然后诊断和修复缺陷,并确保相同的缺陷不再发生...
《架构启示录》内容简介:本书研究传统的建筑工作与数字产品的架构工作之间有着怎样的联系,探讨了Christopher Alexander、Richard
《20世纪的中国乡村》内容简介:本书从四个部分,系统呈现20世纪中国乡村社会发展状况。第一部分,探讨中国近代社会史研究的历程、
纠错码是一门新的差错控制技术,目前已广泛应用于各种通信系统和计算机系统中。王新梅和肖国镇编著的《21世纪高等学校通信类系列
《典藏:经典世界名画高清图集》内容简介:了解艺术史,最直观的方法就是去欣赏艺术作品。本书集结了中世纪以来艺术史上各流派的经
财务共享实训教程 本书特色 本教材共包括三章内容:第1章是财务共享概述篇,结合众多大型企业集团财务共享中心建设的实践经验,对财务共享中心建设过程中涉及的要素、建...
【内容简介】本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优
适合人群:设计爱好者、UI初学者、互联网行业从业人员。《界与面一本写给青春设计师的书(全彩)》是一本设计文化类图书,为即将
《中国至2050年信息科技发展路线图》根据国家战略需求和科学技术发展的宏观规律,对信息科学技术未来40年的发展趋势和我国应选择