PHP源码分析
文章平均质量分 85
楼仔
一枚小小的Go/Java代码搬运工!
展开
-
深入理解PHP原理之Global关键字
转载:http://www.laruence.com/2008/08/24/377.html 闲来无事,就系统的从PHP的词法分析,语法分析,opcodes生成,执行,整个流程,详细的分析了global关键字的实现。 当你在脚本中写下:<?php $var = "laruence"; function sample(){ global $var;原创 2016-08-27 21:27:43 · 753 阅读 · 0 评论 -
深入理解PHP原理之变量结构
参考:http://www.laruence.com/2008/08/22/412.html 这篇博文主要讲PHP中变量的结构,下面是变量在内核中的存储结构,主要由结构体zval和联合体zvalue_value组成,至于结构体和联合体的区别,网上教程很多,在此就不多说,下面让我们看看这两个结构是怎么使用的。struct _zval_struct { zvalue_value value;原创 2016-08-17 16:45:31 · 897 阅读 · 0 评论 -
深入理解PHP原理之常量
在PHP中,常量的名字是一个简单值的标识符,在脚本执行期间该值不能改变。 和变量一样,常量 默认为大小写敏感,但是按照我们的习惯常量标识符总是大写的。首先看下常量与变量的区别,常量是在变量的zval结构的基础上添加了额外的元素,结构如下(php/Zend/zend_constants.h):typedef struct _zend_constant { zval value;原创 2016-08-25 21:16:34 · 883 阅读 · 0 评论 -
深入理解PHP原理之PHP脚本执行原理(2)
在上一篇《深入理解PHP原理之PHP脚本执行原理》文章中已经介绍了PHP的语法分析、词法分析和Opcodes的原理,下面主要通过一个具体的示例,来看看ZE是怎样对PHP脚本进行语法分析和词法分析,并将其编译为Opcodes,下面让我们回顾一下PHP脚本执行的基本流程: 1. Zend Engine(ZE)调用词法分析器(Lex生成的,源码路径:php/Zend/zend_language_s原创 2016-08-24 00:02:29 · 662 阅读 · 0 评论 -
深入理解PHP原理之PHP脚本执行原理(1)
PHP是一个被广泛应用的脚本语言,因为它的成功,所以很多时候,我们应用PHP的时候是不需要考虑底层到底是怎么实现的,我相信大多数的PHP程序员是不会去考虑这一点的,在这篇文章中,我会从整个PHP的执行期入手,大致的介绍下各个阶段,包括词法分析、语法分析和opcode。从最初我们编写的PHP脚本->到最后脚本被执行->得到执行结果,这个过程可以分为如下几个阶段: 首先,Zend Engine(Z原创 2016-08-23 20:35:30 · 1271 阅读 · 0 评论 -
深入理解PHP原理之PHP与WEB服务器交互
我们都知道,PHP需要在具体的WEB服务器中才能运行,例如Nginx、Apache等,但是PHP是怎样启动,又是怎样在服务器中运行,然后两者又是怎样进行交互的呢? 1. WEB服务器调用PHP接口 以Apache服务器为例,我们看看该服务器是怎样启动PHP,并调用PHP中的函数。Apache服务器启动并运行PHP时,一般是通过mod_php7模块的形式集成(如果是php5.*版本,就原创 2016-08-21 15:42:05 · 8224 阅读 · 0 评论 -
深入理解PHP原理之变量赋值
在前面的文章《深入理解PHP原理之变量结构》中我已经介绍了PHP变量的内部结构,下面我将会对变量赋值过程中,PHP内部对数据处理的原理进行阐述,不过在讲述该原理前,需要先了解一下变量名和它的值是如何关联起来的,这个对变量赋值内部原理的理解非常重要,例如: $a = 1; ?> 这个例子看起来非常简单,但是你知道“变量名a”和“数值1”是怎样关联起来的么?在《深入理解PHP原理之变原创 2016-08-18 00:06:53 · 1923 阅读 · 0 评论 -
深入理解PHP原理之变量声明
在PHP中没有对常规变量的声明操作,如果要使用一个变量,直接进行赋值操作即可,因为PHP在赋值操作的同时已经进行声明操作,那么PHP是怎样在赋值前进行声明的呢? 在博文《深入理解PHP原理之变量赋值》中其实已经提到过变量的声明,但是讲述的不够透彻,下面主要通过词法分析、语法分析和获取左值和右值的过程,来讲述变量声明的原理。 下面是一个简单的变量赋值操作:$a = 'hello world原创 2016-08-30 21:15:17 · 372 阅读 · 0 评论 -
深入理解PHP原理之静态变量
通常意义上静态变量是静态分配的,他们的生命周期和程序的生命周期一样, 只有在程序退出时才结束期生命周期,这和局部变量相反。静态变量的类型可以分为静态全局变量、静态局部变、静态成员变量,最常见的是静态局部变量及静态成员变量,先看看如下局部变量的使用:function t() { static $i = 0; $i++; echo $i, ' '; } t(); t(); t()原创 2016-08-28 10:42:20 · 887 阅读 · 0 评论 -
深入理解PHP原理之实现自己的PHP语法
前面的文章中已经讲过PHP的词法分析、语法分析、opcodes编译,有了上面的基础,我们可以通过修改PHP源码,实现自己的PHP语法,示例如下:<?php $demo = 'tipi'; echo var_name($demo); //执行结果,输出:demo ?> 其执行过程如下: 该过程为词法分析–>语法分析–>opcodes编译–执行,下面我们看看每一步对源码有原创 2016-09-11 10:05:55 · 410 阅读 · 0 评论