万本电子书0元读

万本电子书0元读

顶部广告

PHP 7底层设计与源码实现电子书 租阅

售       价:¥

纸质售价:¥78.20购买纸书

1744人正在读 | 2人评论 7

作       者:陈雷 等

出  版  社:机械工业出版社

出版时间:2018-06-01

字       数:35.4万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(2条)
  • 读书简介
  • 目录
  • 累计评论(2条)
滴滴出行专家联合撰写,多位PHP领域大咖推荐,全面吃透PHP底层设计不二之选,全面讲解PHP内核架构、核心构成与内存管理、词法与句法解析、Zend 虚拟机、函数及关键扩展等设计细节与源码实现。 本书逻辑上分为四部分,共计14章内容。 ?第1~2章解读PHP 7的新特性、源码的整体框架(各目录的源码和功能)。 ?第3~6章详细介绍PHP 7的变量实现,涵盖基本变量zval的结构、字符串zend_string的实现、核心结构HashTable(即数组)实现,以及类与对象的实现。 ?第7~11章剖析PHP 7核心的实现,重是PHP 7的生命周期,涵盖生命周期的模块初始化阶段中配置文件的解析,内存管理原理与实现,词法和语法分析的实现,核心Zend虚拟机的实现。 ?第12~14章介绍PHP 7中基本语法、函数、扩展的实现。 ?其中,第3章、第4章、第5章和第14章为本书的重章节。 滴滴出行专家联合撰写,多位PHP领域大咖推荐,全面吃透PHP底层设计不二之选,全面讲解PHP内核架构、核心构成与内存管理、词法与句法解析、Zend 虚拟机、函数及关键扩展等设计细节与源码实现。 本书逻辑上分为四部分,共计14章内容。  第1~2章解读PHP 7的新特性、源码的整体框架(各目录的源码和功能)。  第3~6章详细介绍PHP 7的变量实现,涵盖基本变量zval的结构、字符串zend_string的实现、核心结构HashTable(即数组)实现,以及类与对象的实现。  第7~11章剖析PHP 7核心的实现,重是PHP 7的生命周期,涵盖生命周期的模块初始化阶段中配置文件的解析,内存管理原理与实现,词法和语法分析的实现,核心Zend虚拟机的实现。  第12~14章介绍PHP 7中基本语法、函数、扩展的实现。  其中,第3章、第4章、第5章和第14章为本书的重章节。
【推荐语】
适读人群 :PHP发工程师 Web发工程师 架构师 性能优化工程师 其他爱好者 1)滴滴出行专家联合撰写,多位PHP领域大咖推荐,全面吃透PHP底层设计必备之选 2)全面讲解PHP内核架构、核心实现与内存管理、词法与句法解析、Zend 虚拟机、函数及关键扩展等设计细节与源码实现
【作者】
陈雷 滴滴顺风车运营营销研发技术负责人,曾任腾讯高级PHP研发工程师、心网高级PHP研发工程师、百度PHP研发工程师。清华大学计算机系本科,计算机在职硕士。目前致力于滴滴顺风车智能运营平台的建设,有很强的架构能力,丰富的业务抽象经验与管理经验。  黄桃 滴滴资深发工程师,多年PHP发经验,尤善高并发处理、大型网站架构,乐于钻研技术难,愿意分享。  李长林 滴滴资深工程师,曾就职于腾讯、滴滴等知名互联网公司,专注于高并发Web后台发,活跃于源社区。  李志 资深Web发者,曾任职于腾讯,现就职于滴滴。  王坤 滴滴顺风车后端发工程师,PHP爱好者,多年发经验,喜欢学习和交流。  肖涛 穿梭在PHP各大社区多年,具有丰富的高并发处理经验,现任职滴滴高级研发工程师。  朱栋 滴滴后端发工程师,曾多次参与大型高并发项目的设计与发,有丰富的后端发经验,喜欢研究新技术,喜欢折腾。
目录展开

本书赞誉

前言

第1章 PHP 7概况

1.1 PHP简史与新特性

1.2 PHP 7安装和调试

1.2.1 编译安装

1.2.2 使用GDB调试PHP 7

1.2.3 vld扩展

1.3 PHP 7源码阅读工具介绍

1.3.1 Source Insight

1.3.2 Understand

1.3.3 Vim+Ctags

1.4 本章小结

第2章 初识PHP 7源码整体框架

2.1 PHP 7语言的执行原理

2.1.1 编译型语言与解释型语言

2.1.2 PHP 7的执行原理概述

2.2 PHP 7内核架构

2.3 PHP 7源码结构初步介绍

2.3.1 sapi目录源码

2.3.2 Zend目录源码

2.3.3 main目录源码

2.3.4 ext目录源码

2.3.5 TSRM目录源码

2.4 本章小结

第3章 基本变量

3.1 基本知识

3.1.1 数据类型

3.1.2 结构体与联合体

3.1.3 堆和栈的基本知识

3.2 变量的类型和实现

3.2.1 PHP 5的zval

3.2.2 PHP 7的zval

3.2.3 PHP 7变量类型

3.2.4 整型和浮点型

3.2.5 字符串类型

3.2.6 数组

3.2.7 引用

3.2.8 间接zval

3.2.9 常量和常量AST

3.2.10 资源类型

3.2.11 对象

3.3 变量的作用域

3.3.1 全局变量

3.3.2 局部变量

3.3.3 中间变量

3.3.4 静态变量

3.3.5 常量

3.4 对垃圾回收的支持

3.4.1 gc的基本结构

3.4.2 引用计数

3.4.3 循环引用问题

3.4.4 垃圾回收

3.5 本章小结

第4章 字符串

4.1 字符串的结构

4.1.1 PHP 7字符串的具体实现

4.1.2 字符串的二进制安全

4.1.3 zend_string API

4.2 智能字符串

4.2.1 smart_str对比smart_string

4.2.2 智能字符串的具体实现

4.2.3 smart_str API

4.3 进阶

4.3.1 字符串的赋值与写时分离

4.3.2 字符串的类别(内部字符串)

4.3.3 字符串的类型转换

4.3.4 字符串的双引号与单引号

4.3.5 PHP常用字符串操作函数实现

4.4 本章小结

第5章 数组的实现

5.1 基本概念

5.1.1 数组的语义

5.1.2 数组的概念

5.2 PHP 5数组的实现

5.3 PHP 7数组的实现

5.3.1 基本结构

5.3.2 初始化

5.3.3 packed array和hash array的区别

5.3.4 插入、更新、查找和删除

5.3.5 哈希冲突的解决

5.3.6 扩容和rehash操作

5.3.7 数组的递归保护

5.4 本章小结

第6章 面向对象

6.1 类的种类

6.1.1 普通类

6.1.2 抽象类

6.1.3 接口

6.1.4 特性

6.1.5 final类

6.1.6 匿名类

6.2 类的特性

6.2.1 类的属性

6.2.2 访问控制

6.3 类的实现

6.3.1 类的结构

6.3.2 静态属性、常量和方法

6.3.3 接口和特性

6.3.4 继承

6.4 对象的实现

6.4.1 实现

6.4.2 普通属性

6.5 其他特性

6.5.1 魔术方法

6.5.2 自动加载

6.6 本章小结

第7章 生命周期

7.1 基础知识

7.1.1 信号处理

7.1.2 SAPI简介

7.1.3 SAPI核心结构SG(v)

7.2 CLI模式的生命周期

7.2.1 模块初始化阶段

7.2.2 请求初始化阶段

7.2.3 执行阶段

7.2.4 请求关闭阶段

7.2.5 模块关闭阶段

7.2.6 其他工作

7.3 FPM模式的生命周期

7.3.1 多进程管理

7.3.2 网络编程

7.3.3 FastCGI协议

7.4 其他模式

7.5 本章小结

第8章 配置文件解析

8.1 配置文件简介

8.2 配置基本语法

8.3 配置文件的加载

8.4 扩展配置

8.5 运行时的配置

8.6 本章小结

第9章 内存管理

9.1 内存管理的意义

9.2 内存管理的准备知识

9.2.1 基本概念

9.2.2 内存对齐

9.3 内存管理的数据结构

9.3.1 _zend_mm_heap

9.3.2 _zend_mm_chunk

9.4 内存管理的详细实现

9.4.1 内存管理初始化

9.4.2 内存申请

9.4.3 内存管理之huge内存

9.4.4 内存管理之large内存

9.4.5 内存管理之small内存

9.5 内存回收

9.6 本章小结

第10章 词法和语法分析

10.1 基础知识

10.1.1 编译器

10.1.2 源程序分析

10.1.3 BNF范式

10.2 词法与语法分析器

10.2.1 Lex与YACC

10.2.2 Re2c与Bison

10.3 Token类型

10.4 PHP 7词法与语法相关数据结构

10.4.1 CG(v)宏

10.4.2 zend_stack

10.4.3 zend_ast相关结构

10.4.4 zend_arena

10.4.5 zend_parser_stack_elem

10.5 PHP 7词法与语法分析

10.5.1 整体过程

10.5.2 词法与语法分析阶段

10.6 AST的优势

10.7 源码中的其他使用

10.8 本章小结

第11章 Zend虚拟机

11.1 基础知识

11.1.1 Zend虚拟机架构

11.1.2 符号表

11.1.3 函数调用栈

11.1.4 指令

11.2 相关数据结构

11.2.1 EG(v)

11.2.2 符号表

11.2.3 指令

11.2.4 指令集

11.2.5 执行数据

11.2.6 执行栈

11.3 AST编译过程

11.3.1 op_array初始化

11.3.2 AST编译

11.3.3 设置指令handler

11.4 执行过程

11.4.1 执行栈分配

11.4.2 初始化execute_data

11.4.3 调用hanlder函数执行

11.4.4 释放execute_data

11.5 其他调度方式

11.6 本章小结

第12章 基本语法实现

12.1 条件判断

12.2 循环语句

12.2.1 foreach语句

12.2.2 while语句

12.2.3 for语句

12.2.4 do while语句

12.3 中断与跳转

12.3.1 break的实现

12.3.2 goto的实现

12.4 文件引入

12.5 异常/错误处理

12.6 本章小结

第13章 函数实现

13.1 基础知识

13.2 用户定义函数的编译

13.3 用户定义函数的执行

13.4 内置函数

13.4.1 内置函数的注册

13.4.2 内置函数的执行

13.5 本章小结

第14章 扩展

14.1 扩展的实现原理

14.2 PHP扩展

14.2.1 扩展的实现

14.2.2 JSON扩展

14.3 Zend扩展

14.3.1 Zend扩展的实现

14.3.2 opcache扩展

14.4 自定义扩展

14.4.1 初始化

14.4.2 编译配置

14.4.3 功能实现

14.4.4 注册配置项

14.4.5 编译、安装

14.5 本章小结

附录A php.ini配置项说明

附录B Token与opcode含义对应表

累计评论(2条) 5个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部