- 博客(4)
- 资源 (7)
- 收藏
- 关注
原创 PHP源码分析-HashTable API
一、创建HashTableint zend_hash_init( HashTable *ht,//指向一个HashTable uint nSize,//nSize是指这个HashTable可以拥有的元素的最大数量。在我们添加新的元素时,这个值会根据情况决定是否自动增长,这个值永远都是2的次方,如果你给它的值不是一个2的次方 //的形式,那它将自动调整成大于它的最小的2的次方值。它
2011-12-17 17:43:17 5059
原创 PHP源码分析-数组
PHP中经常使用数组,使用数组最大的好处便是速度!读写都可以在O(1)内完成,因为它每个元素的大小都是一致的,只要知道下标,便可以瞬间计算出其对应的元素在内存中的位置,从而直接取出或者写入。那么内核中是如何实现的呢?PHP大部分功能,都是通过HashTable来实现,其中就包括数组。HashTable即具有双向链表的优点,同时具有能与数据匹敌的操作性能。PHP中的定义的变量保存在一个符
2011-12-15 13:53:15 7945
原创 PHP源码分析-变量的存储方式
PHP中的变量类型和值是通过C语言实现的,内核具体是如何组织用户在PHP中定义的变量呢?HashTable在ZE内核中被广泛使用,PHP变量也正是存储在一个HashTable实现的符号表里。当在PHP中调用一个函数或者类时,内核会创建一个新的符号表,这也是为什么在函数中无法使用函数外部定义的变量的原因。(因为他们分属两个符号表,一个当前作用域,一个全局作用域)现在来看内核中是如
2011-12-09 17:16:39 4229
原创 PHP源码分析-变量的引用计数、写时复制(Reference counting & Copy-on-Write)
PHP语法中有两种赋值方式:引用赋值、非引用赋值。<?php $a = 1; $b = $a; // 非引用赋值 $c = &$b; // 引用赋值从表面看,通常会这样认为:“引用赋值就是两个变量对应同一个变量(在C中其实就是一个zval),非引用赋值则是直接产生的一个新的变量(zval),同时将值copy过来”。这种认为在大部分情况下都是可以想通的。(#1)但有
2011-12-01 14:08:10 3040
PHP tokyo cabinet扩展
2013-03-28
jakarta-taglibs-standard-1.1.2
2011-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人