原文:PHP内核探索之变量(1)Zval

作为数据的容器,我们常常需要跟变量打交道,不管这个变量是数字 数组 字符串 对象还是其他,因而可以说变量是构成语言的不可或缺的基础。本文是PHP内核探索之变量的第一篇,主要介绍zval的基本知识,包括如下几个方面的内容: Zval的基本结构 查看zval的方法:debug zval dump和xdebug Zval的原理,COW等 由于写作仓促,难免会有错误,欢迎指出。 一 Zval的基本结构 Z ...

2014-11-26 00:20 16 7449 推荐指数:

查看详情

PHP内核探索之变量(2)-理解引用

本文主要内容: 引论 符号表与zval 引用原理 回到最初的问题 一、引论   很久之前写了一篇关于引用的文章,当时写的寥寥草草,很多原理都没有说清楚。最近在翻阅Derick Rethans(home: http://derickrethans.nl/ Github ...

Sat Nov 29 01:33:00 CST 2014 9 2235
PHP内核探索之变量(3)- hash table

PHP中,除了zval, 另一个比较重要的数据结构非hash table莫属,例如我们最常见的数组,在底层便是hash table。除了数组,在线程安全(TSRM)、GC、资源管理、Global变量、ini配置管理中,几乎都有Hash table的踪迹(上一次我们也提到,符号表也是 ...

Fri Dec 19 02:37:00 CST 2014 7 1943
PHP内核探索之变量(4)- 数组操作

上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用的函数系列-数组操作的相关函数做进一步的跟踪。 本文主要内容: PHP中提供的数组操作函数 数组操作函数的实现 结语参考文献 ...

Thu Dec 25 06:34:00 CST 2014 6 1503
PHP内核探索之变量(7)- 不平凡的字符串

切,一个字符串有什么好研究的。 别这么说,看过《平凡的世界》么,平凡的字符串也可以有不平凡的故事。试看: (1) 在C语言中,strlen计算字符串的时间复杂度是?PHP中呢? (2) 在PHP中,怎样处理多字节字符串?PHP对unicode的支持如何? 同样是 ...

Tue Mar 31 01:13:00 CST 2015 7 2357
php内核分析(五)-zval

这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux 实际上,从这个函数开始,就已经进入到了zend引擎的范围了。 实际上是调用Zend/zend_execute_API.c 再进去是调用 这里的retval_ptr为NULL,string_name ...

Mon Nov 28 18:24:00 CST 2016 0 3940
PHP内核探索:数组与链表

在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢? 我们在选择各种数据结构时,往往会考虑我们需要处理的数据规模以及需要的性能。下面让我们简要的看一下看C语言中数组和链表 ...

Sat May 21 23:49:00 CST 2016 0 1735
[PHP内核探索]PHP中的哈希表

PHP内核中,其中一个很重要的数据结构就是HashTable。我们常用的数组,在内核中就是用HashTable来实现。那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据结构,但是算法书籍里面没有具体的实现算法,刚好最近也在阅读PHP的源码,于是参考PHP ...

Tue Jul 05 19:55:00 CST 2016 3 4264
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM