PHP内核中是如何实现 empty, isset, echo 这些函数的?

扣丁禅师 发布于 2015/11/06 19:34
阅读 600
收藏 0

利用ZEND_FUNCTION(xxxx) 这种形式封装的函数很好理解。但是有些比如 isset, empty,echo 这些实现逻辑不太理解,似乎是在编译期处理的,或是当做操作符了。有没有读过PHP内核源码,对这些封装有了解大牛,帮忙给个思路,多谢。

github上PHP仓储对应的代码分支:remotes/origin/PHP-5.6.9

加载中
0
扣丁禅师
扣丁禅师

花了点时间,自己研究并整理了一下:

http://my.oschina.net/zencodex/blog/527485

如果有认识错误的地方,也欢迎斧正。

1
朱__朱
朱__朱
它们不是函数!
0
游走的鱼
http://php-internals.com/
0
有明丶
有明丶

简单的来说吧,你可以把它理解成一种语法结构,就像 if while switch 一样。

这样做的好处就是不需要走普通函数复杂的流程,效率高很多。

-1
扣丁禅师
扣丁禅师

引用来自“游走的鱼”的评论

http://php-internals.com/
这个我之前看过了,也没找到我想要了解的部分,如果你有思路麻烦说具体点,这个链接包罗万象。
-1
扣丁禅师
扣丁禅师

引用来自“朱__朱”的评论

它们不是函数!

核心不是做为函数处理的,叫操作符?官方的Manual反正是按函数介绍的,这个称呼不是重点,重点是我的问题,大牛能出来解答下

-1
扣丁禅师
扣丁禅师

拜托大家回答重点,我想知道内核是如何实现echo, isset, echo 这些流程的,请对照内核源码回答,源文件,行号,比如是操作符,需要词法解析,请给出我对应位置和大概流程即可。

我的版本是

remotes/origin/PHP-5.6.9

如果你看的不是这个版本的,也同时标注下版本号,我会看对应版本的源码。

楼上的回答都不在点上啊,不过也同样谢谢。

返回顶部
顶部