02 2016 档案

摘要:之前在[译]更快的方式实现PHP数组去重讨论了使用array_flip后再调用array_keys函数替换直接调用array_unique函数实现数组去重性能较好。由于原文没有给出源码分析和测试的结果,导致给读者造成迷惑,在此说声抱歉。为了解开读者的疑惑,笔者承诺了会补上源码的分析,现在此补上详细的说明。 阅读全文
posted @ 2016-02-24 18:07 hoohack 阅读(1434) 评论(5) 推荐(8) 编辑
摘要:strlen函数说明。 int strlen ( string $string ) 在这篇文章,我们可以知道strlen函数是通过Zend Engine定义的。函数的定义可以在这里查看。 在这里也给出函数的源码: 阅读全文
posted @ 2016-02-24 17:39 hoohack 阅读(368) 评论(0) 推荐(0) 编辑
摘要:原文:https://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html 欢迎来到”给PHP开发者的PHP源码”系列的第四部分,这一部分我们会谈论PHP数组在内部是如何表示和在代码库里使用的。 为了防止你错过了之前的文章,以下是链接: 第一部分:给PHP开发者的PHP源码-源码结构 第二部分:理解PHP内部函数的定义 第三部分:PHP的变量实现 阅读全文
posted @ 2016-02-24 17:33 hoohack 阅读(327) 评论(0) 推荐(1) 编辑
摘要:在PHP的核心代码中,变量被称为ZVAL。这个结构之所以那么重要是有原因的,不仅仅是因为PHP使用弱类型而C使用强类型。那么ZVAL是怎么解决这个问题的呢?要回答这个问题,我们需要认真的查看ZVAL类型的定义。要查看这个定义,让我们尝试在lxr页面的定义搜索框里搜索zval。乍一眼看去,我们似乎找不到任何有用的东西。但是有一行typedef在zend.h文件(typedef在C里面是一种定义新的数据类型的方式)。这个也许就是我们要找的东西,再继续查看。原来,这看起来是不相干的。这里并没有任何有用的东西。但为了确认一些,我们来点击_zval_struct这一行。 阅读全文
posted @ 2016-02-24 17:28 hoohack 阅读(369) 评论(0) 推荐(0) 编辑
摘要:欢迎来到"给PHP开发者的PHP源码"系列的第二部分。 在上一篇中,ircmaxell说明了你可以在哪里找到PHP的源码,它的基本目录结构以及简单地介绍了一些C语言(因为PHP是用C语言来写的)。如果你错过了那篇文章,在你开始读这篇文章之前也许你应该读一下它。 在这篇文章中,我们谈论的是定位PHP内部函数的定义,以及理解它们的原理。 阅读全文
posted @ 2016-02-16 09:29 hoohack 阅读(484) 评论(0) 推荐(0) 编辑
摘要:作为一个开发者,我发现在我的日常工作中越来越多地查看PHP的源码。在为了弄清楚奇怪的边界问题和为什么某些问题应该发生的却没有发生而去理解背后究竟发生了什么事情的时候非常有用。在文档缺失、不完整或者错误的情况下也很有用。因此,我已经决定通过一系列的文章来分享我学到的知识,给予PHP开发者们足够的知识去真正阅读PHP的C语言源码。你并不需要有C语言的基础(我们会总结一些基础),但如果有的话会更有帮助。 阅读全文
posted @ 2016-02-12 09:45 hoohack 阅读(861) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示