CODE, ARCHITECTURE & AI

PHP内核.

12 篇记录保持好奇,慢慢积累

PHP成员变量获取对比

有如下4个代码示例,你认为他们创建对象,并获得成员变量的速度排序是怎样的? 1:将成员变量设置为public,通过赋值操作给成员变量赋值,直接获取变量 class Foo { public $id; } $data = new Foo; $data->id = 10; echo $data->id; 2:将成员变量设置为public,通过构造函数设置成员变量…
继续阅读 ↗

re2c中文手册

re2c中文手册 在PHP的实现过程中,包括PHP语言本身的词法分析,一共有多达8处的地方使用了re2c,如果我们常用的时间函数、pdo扩展等。对re2c的了解更能促进我们进PHP内核实现的认知。 本手册是re2c官网的manual.html文件翻译稿,仅适用于对re2c的初步了解,更多的资料见 re2c项目 中lessons目录和doc目录。 Name r…
继续阅读 ↗

PHP的ticks机制

PHP的ticks机制 要过年了,在年前完成这篇文章,如果有缘可以看到,祝福看到的朋友新年快乐,在新的一年里,万事顺意! 按今年的计划每个月至少有两篇文章,而一月份因为各种理由而只有一篇2012的总结,无论什么原因,总归是不对的。这篇算是补上的,也作为今年的开始。 回正题,今天要研究的是PHP的ticks机制。 PHP提供declare关键字和ticks关键…
继续阅读 ↗

细读PHP的生命周期

在《Extending and Embedding PHP》中,有一张经典的描述PHP单进程生命周期的图,一直也是按这个图理解其生命周期的,可是当准备一次内核分享时,却表现自己没有什么可以说的,于是就有了今天的这篇文章:细读PHP的生命周期。这里,我们会详细说明在CLI模式下PHP一个生命周期中做了哪些事情。 启动 在调用每个模块的模块初始化前,会有一个初始…
继续阅读 ↗

PHP变量的CV类型

PHP变量的CV类型 在我们使用VLD扩展查看PHP生成的中间代码时,经常会看到有这样一项:compiled vars: !0 = $a,或者如果使用更加详细的 -dvld.verbosity=3参数,会看到IS_CV,IS_VAR等类型。这里所说的Compiled vars和IS_CV都与今天我们所要了解的CV类型有莫大的关系。 CV者,Compiled …
继续阅读 ↗