php框架原理 php初识,初识 PHP 7 源码整体框架
PHP 7 语言的执行原理
我们常用的高级语言有很多种,比较出名的有C\C++、Python、PHP、Go、Pascal等。而这些语言根据运行的方式不同,大体分为两种:编译型语言和解释型语言。
其中,编译型语言包括C\C++、Pascal、Go等。这里说的编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进一步根据软硬件环境编译成目标文件。
一般称完成编译工作的工具为编译器。而解释型语言,在程序运行时才被“翻译”为机器语言。但是执行一次“翻译”一次,所以执行效率较低。解释器的工作就是解释型语言中,负责“翻译”源代码的程序。
编译型语言与解释型语言
我们知道,对于一段C语言代码,需要经过预编译、编译、汇编和链接,才能成为可执行的二进制文件。以 hello.c 为例。
#include
int main(){
printf("hello world");
return 1;
}
本章对编译型语言与解释型语言的区别的理解,立足于源代码被编译成目标平台CPU指令的时机。对于编译型语言,编译结果已经是针对当前CPU体系的指令;而解释型语言,需要先编译成中间代码,再经由该解释型语言的特定虚拟机,翻译成特定CPU体系的指令被执行。解释型语言是在运行过程中,翻译为目标平台的指令。常说解释型语言“慢”,主要也是慢在这里。
在PHP 7中,源代码首先进行词法分析,将源代码切割为多个字符串单元,分割后的字符串称为 Token。而一个一个独立的Token是无法表达完整语义的,需经过语法分析阶段,将Token转换为抽象语法树(简称AST)。之后,抽象语法树被转换为机器指令执行。在PHP中,这些指令称为opcode。
到AST的生成这一步,编译型语言与解释型语言所需经历的过程相似。从抽象语法树之后开始产生差异。
以PHP为例,解释型语言的执行示意图
php框架原理 php初识,初识 PHP 7 源码整体框架相关推荐
- underscore.js源码整体框架解析
源码框架 读一些库的源码时最头疼的其实不是里面各个函数的功能,而是整体结构框架,通常库的源码都很长,跟框架相关的代码并不是在一起放着的,导致你想明白起来就很困难. 我看过通过画图的方式去讲解框架的,但 ...
- 学习 vuex 源码整体架构,打造属于自己的状态管理库
前言 这是学习源码整体架构第五篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 其余四篇分别是: ...
- vuex 源码整体架构学习
前言 这是学习源码整体架构第五篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 其余四篇分别是: ...
- 学习 launch-editor 源码整体架构,探究 vue-devtools「在编辑器中打开组件」功能实现原理...
1. 前言 你好,我是若川[1],微信搜索「若川视野」关注我,专注前端技术分享,一个愿景是帮助5年内前端开阔视野走向前列的公众号.欢迎加我微信ruochuan12,长期交流学习. 这是学习源码整体架构 ...
- 学习 redux 源码整体架构,深入理解 redux 及其中间件原理
如果觉得内容不错,可以设为星标置顶我的公众号 1. 前言 你好,我是若川.这是学习源码整体架构系列第八篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是 ...
- 学习 sentry 源码整体架构,打造属于自己的前端异常监控SDK
前言 这是学习源码整体架构第四篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.文章学习的是打包整合后的代码,不是实际仓库中的拆分 ...
- 学习 lodash 源码整体架构,打造属于自己的函数式编程类库
前言 这是 学习源码整体架构系列第三篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.文章学习的是打包整合后的代码,不是实际仓库中 ...
- 学习underscore源码整体架构,打造属于自己的函数式编程类库
前言 上一篇文章写了 jQuery整体架构,学习 jQuery 源码整体架构,打造属于自己的 js 类库 虽然看过挺多 underscore.js分析类的文章,但总感觉少点什么.这也许就是纸上得来终觉 ...
- 学习 jQuery 源码整体架构,打造属于自己的 js 类库
虽然现在基本不怎么使用 jQuery了,但 jQuery流行 10多年的 JS库,还是有必要学习它的源码的.也可以学着打造属于自己的 js类库,求职面试时可以增色不少. 本文章学习的是 v3.4.1版 ...
最新文章
- android用什么包管理器,android – 包管理器已经死了
- test zero --simulator choose
- js的arguments_javascript
- 线程池的几个重要参数?—— 七大参数
- Knative 实战:如何在 Knative 中配置自定义域名及路由规则
- 红帽linux系统轴控系统,红帽发布企业版 Linux(RHEL) 8.0
- 【渝粤题库】广东开放大学 综合英语1 形成性考核 (2)
- 阿里预面:谈谈你对双亲委派机制的理解?这个名字有啥问题?如何打破?为啥双亲委派?...
- 一键安装zabbix监控redis
- linux命令的-和--参数问题
- 家里的狗为什么打不过猫
- docker 时区_腾讯云上用Docker建立Kiftd服务器
- 2、CSS动画之行走的米兔、奔跑的小人
- python交通流预测算法_一种高速公路交通流预测方法与流程
- matlab环境下图像分形维数的计算,MATLAB环境下图像分形维数的计算.pdf
- 《Microduino实战》——3.5 I/O操作——现学现用
- 中国怪企 许昌怪人----胖东来
- Edraw Max(亿图图示)案例:产品经理如何用亿图绘制流程图? 1
- 视频教程-C++游戏编程实例精讲--3D射击游戏作弊-C/C++
- 4月Google Play政策更新,游戏上架需要注意这几点
热门文章
- 通过Mybatis获取mysql表中重复记录的方法
- 前端urldecode 特殊字符处理导致后端无法解析
- jquery $.fn $.fx $.extend
- curl / libcURL ‘tailmatch()’ Cookie 信息泄露漏洞
- 屏保延迟启用密码保护
- 续php的一些基本概念
- 驱动对象-设备对象-设备栈
- Asp.net主题(theme)和皮肤(skin)的使用
- 7年前的200电话卡帐号
- 回归模型的score得分为负_逻辑回归评分卡实现和评估