數(shù)組
array 是 PHP 中非常強(qiáng)大的一個(gè)數(shù)據(jù)結(jié)構(gòu),它的底層實(shí)現(xiàn)就是普通的有序HashTable,這里簡(jiǎn)單看下它的結(jié)構(gòu)。后續(xù)再具體深入。
typedef struct _zend_array HashTable;struct _zend_array {
zend_refcounted_h gc; union { struct {
ZEND_ENDIAN_LOHI_4(
zend_uchar flags,
zend_uchar nApplyCount,
zend_uchar nIteratorsCount,
zend_uchar consistency)
} v; uint32_t flags;
} u; uint32_t nTableMask;
Bucket *arData; uint32_t nNumUsed; uint32_t nNumOfElements; uint32_t nTableSize; uint32_t nInternalPointer;
zend_long nNextFreeElement; dtor_func_t pDestructor;
}復(fù)制代碼
###對(duì)象
PHP7 的對(duì)象結(jié)構(gòu)也是重新設(shè)計(jì)了,和 PHP5 的實(shí)現(xiàn)有了很大的不同。
struct _zend_object {
zend_refcounted_h gc; uint32_t handle;
zend_class_entry *ce;
const zend_object_handlers *handlers;
HashTable *properties;
zval properties_table[1];
};復(fù)制代碼
這里介紹下其中幾個(gè)字段:
gc:gc頭部
*ce:對(duì)象對(duì)應(yīng)的 class 類
*properties :HashTable結(jié)構(gòu),key 為對(duì)象的屬性名,value 是屬性值在properties_tables數(shù)組中的偏移量,通過偏移量在 properties_talbe 找到對(duì)應(yīng)的屬性值。
properties_talbe[1]:存儲(chǔ)對(duì)象的屬性值
免費(fèi)推薦:PHP7
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問題,請(qǐng)?jiān)L問西部數(shù)碼官網(wǎng):m.ps-sw.cn