百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> PHP底层剖析之对于强迫破裂
分享文章到:

PHP底层剖析之对于强迫破裂

发布时间:09/01 来源:未知 浏览: 关键词:
学习需要知其然而知其所以然,PHP底层相关就是这类知识。

引荐:《PHP培训》

今天来讲讲关于强迫分裂的知识,简便来说,强迫分裂就是”在援用变量主动赋值前,该变量传值赋值过,就会发生强迫分裂。”

话说起来比力绕,看下代码解析吧。

看下面的代码:

8c189b9572c2495fea7e2dfafeb942b.png

轻微熟知 PHP:&援用符号都应当可以看出,output离别为gzchen,黄昏八点半,gzchen。

那么我们来看看以上代码的底层运转流程吧。

一目了然,一个变量就是一个构造体,长成下面这样:

ceebbd44751d6286eb697c9f5eaf4ba.png

每一行都写了注释,此文件在zend.h在PHP源码Zend的名目下。

今世码运转到line:3[$name = ‘黄昏八点半’]的时候,内存中的构造体长这样:

a91106ef99ed59f5fd604e44c4ce471.png

今世码运转到line:4[name]的时候,构造体变成这样:

6d0886082695783820c8fc9dcc4b920.png

运转到line:5[Misplaced &name]和line:[$nameCopy = ‘gzchen’],是这样:

e8114bdad804cdd0fada39fed3e11d3.png

此处,此处,就是此处发生了强迫分裂。

当is_ref__gc[援用属性]从0->1,假如refcont_gc>1,那么就会发生强迫分裂。伪代码就是:

dd3ec3e217193bd0bb3edd330be24d9.png

这个就是强迫分裂。本来已经经过传值赋值的变量,再次援用赋值出去。被传值赋值的变量就会被分裂出一个构造体,在这里是$myName。

实际开发根本用不到这层道理,但在面试中强迫分裂平常会和写时复制(cow)一起考。

更多编程相关内容,请关注百分百源码网编程入门栏目!

以上就是PHP底层剖析之关于强迫分裂的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有153人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板