日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

PHP內(nèi)核探索 —— 變量的值操作:三個(gè)基礎(chǔ)宏方便對(duì)變量的值進(jìn)行操作

瀏覽:21日期:2022-09-16 14:37:56

PHP內(nèi)核提供了三個(gè)基礎(chǔ)宏來方便我們對(duì)變量的值進(jìn)行操作,這幾個(gè)宏同樣以Z_開頭,并且P結(jié)尾和PP結(jié)尾的同上一節(jié)中的宏一樣,分別代表這參數(shù)是指針還是指針的指針。此外,為了進(jìn)一步方便我們的工作,內(nèi)核中針對(duì)具體的數(shù)據(jù)類型分別定義了相應(yīng)的宏。如針對(duì)IS_BOOL型的BVAL組合(Z_BVAL、Z_BVAL_P、Z_BVAL_PP)和針對(duì)IS_DOUBLE的DVAL組合(Z_DVAL、ZDVAL_P、ZDVAL_PP)等等。我們通過下面這個(gè)例子來應(yīng)用一下這幾個(gè)宏:

void display_value(zval zv,zval *zv_p,zval **zv_pp){if( Z_TYPE(zv) == IS_NULL ){php_printf('類型是 IS_NULL!n');}if( Z_TYPE_P(zv_p) == IS_LONG ){php_printf('類型是 IS_LONG,值是:%ld' , Z_LVAL_P(zv_p));}if(Z_TYPE_PP(zv_pp) == IS_DOUBLE ){php_printf('類型是 IS_DOUBLE,值是:%f' , Z_DVAL_PP(zv_pp) );}}

String型變量比較特殊,因?yàn)閮?nèi)核在保存String型變量時(shí),不僅保存了字符串的值,還保存了它的長(zhǎng)度,所以它有對(duì)應(yīng)的兩種宏組合STRVAL和STRLEN,即:Z_STRVAL、Z_STRVAL_P、Z_STRVAL_PP與Z_STRLEN、Z_STRLEN_P、Z_STRLEN_PP。前一種宏返回的是char *型,即字符串的地址;后一種返回的是int型,即字符串的長(zhǎng)度。

void display_string(zval *zstr){ if (Z_TYPE_P(zstr) != IS_STRING) {php_printf('這個(gè)變量不是字符串!n');return; } PHPWRITE(Z_STRVAL_P(zstr), Z_STRLEN_P(zstr)); //這里用了PHPWRITE宏,只要知道它是從Z_STRVAL_P(zstr)地址開始,輸出Z_STRLEN_P(zstr)長(zhǎng)度的字符就可以了。}

Array型變量的值其實(shí)是存儲(chǔ)在C語言實(shí)現(xiàn)的HashTable中的,我們可以用ARRVAL組合宏(Z_ARRVAL, Z_ARRVAL_P, Z_ARRVAL_PP)這三個(gè)宏來訪問數(shù)組的值。如果你看舊版本php的源碼或者部分pecl擴(kuò)展的源碼,可能會(huì)發(fā)現(xiàn)一個(gè)HASH_OF()宏,這個(gè)宏等價(jià)于Z_ARRVAL_P(),但不推薦在新代碼中再使用了。

對(duì)象是一個(gè)復(fù)雜的結(jié)構(gòu)體(zend_object_value結(jié)構(gòu)體),不僅存儲(chǔ)屬性的定義、屬性的值,還存儲(chǔ)著訪問權(quán)限、方法等信息。內(nèi)核中定義了以下組合宏讓我們方便的操作對(duì)象:OBJ_HANDLE, which returns the handle identifier, OBJ_HT for the handler table, OBJCE for the class definition, OBJPROP for the property HashTable, and OBJ_HANDLER for manipulating a specific handler method in the OBJ_HT table. Don’t worry about the meaning of these various object macros just yet; they’ll be covered in detail in Chapter 10, 'PHP4 Objects,' and Chapter 11, 'PHP5 Objects.'

資源型變量的值其實(shí)就是一個(gè)整數(shù),可以用RESVAL組合宏來訪問它,我們把它的值傳給zend_fetch_resource函數(shù),便可以得到這個(gè)資源的操作句柄,如mysql的鏈接句柄等。有關(guān)資源的內(nèi)容我們將在第9章展開敘述。

有關(guān)值操作的宏都定義在./Zend/zend_operators.h文件里:

//操作整數(shù)的#define Z_LVAL(zval)(zval).value.lval#define Z_LVAL_P(zval_p)Z_LVAL(*zval_p)#define Z_LVAL_PP(zval_pp)Z_LVAL(**zval_pp)//操作IS_BOOL布爾型的#define Z_BVAL(zval)((zend_bool)(zval).value.lval)#define Z_BVAL_P(zval_p)Z_BVAL(*zval_p)#define Z_BVAL_PP(zval_pp)Z_BVAL(**zval_pp)//操作浮點(diǎn)數(shù)的#define Z_DVAL(zval)(zval).value.dval#define Z_DVAL_P(zval_p)Z_DVAL(*zval_p)#define Z_DVAL_PP(zval_pp)Z_DVAL(**zval_pp)//操作字符串的值和長(zhǎng)度的#define Z_STRVAL(zval)(zval).value.str.val#define Z_STRVAL_P(zval_p)Z_STRVAL(*zval_p)#define Z_STRVAL_PP(zval_pp)Z_STRVAL(**zval_pp)#define Z_STRLEN(zval)(zval).value.str.len#define Z_STRLEN_P(zval_p)Z_STRLEN(*zval_p)#define Z_STRLEN_PP(zval_pp)Z_STRLEN(**zval_pp)//操作數(shù)組的#define Z_ARRVAL(zval)(zval).value.ht#define Z_ARRVAL_P(zval_p)Z_ARRVAL(*zval_p)#define Z_ARRVAL_PP(zval_pp)Z_ARRVAL(**zval_pp)//操作對(duì)象的#define Z_OBJVAL(zval)(zval).value.obj#define Z_OBJVAL_P(zval_p)Z_OBJVAL(*zval_p)#define Z_OBJVAL_PP(zval_pp)Z_OBJVAL(**zval_pp)#define Z_OBJ_HANDLE(zval)Z_OBJVAL(zval).handle#define Z_OBJ_HANDLE_P(zval_p)Z_OBJ_HANDLE(*zval_p)#define Z_OBJ_HANDLE_PP(zval_p)Z_OBJ_HANDLE(**zval_p)#define Z_OBJ_HT(zval)Z_OBJVAL(zval).handlers#define Z_OBJ_HT_P(zval_p)Z_OBJ_HT(*zval_p)#define Z_OBJ_HT_PP(zval_p)Z_OBJ_HT(**zval_p)#define Z_OBJCE(zval)zend_get_class_entry(&(zval) TSRMLS_CC)#define Z_OBJCE_P(zval_p)Z_OBJCE(*zval_p)#define Z_OBJCE_PP(zval_pp)Z_OBJCE(**zval_pp)#define Z_OBJPROP(zval)Z_OBJ_HT((zval))->get_properties(&(zval) TSRMLS_CC)#define Z_OBJPROP_P(zval_p)Z_OBJPROP(*zval_p)#define Z_OBJPROP_PP(zval_pp)Z_OBJPROP(**zval_pp)#define Z_OBJ_HANDLER(zval, hf) Z_OBJ_HT((zval))->hf#define Z_OBJ_HANDLER_P(zval_p, h)Z_OBJ_HANDLER(*zval_p, h)#define Z_OBJ_HANDLER_PP(zval_p, h)Z_OBJ_HANDLER(**zval_p, h)#define Z_OBJDEBUG(zval,is_tmp)(Z_OBJ_HANDLER((zval),get_debug_info)?Z_OBJ_HANDLER((zval),get_debug_info)(&(zval),&is_tmp TSRMLS_CC): (is_tmp=0,Z_OBJ_HANDLER((zval),get_properties)?Z_OBJPROP(zval):NULL)) #define Z_OBJDEBUG_P(zval_p,is_tmp)Z_OBJDEBUG(*zval_p,is_tmp) #define Z_OBJDEBUG_PP(zval_pp,is_tmp)Z_OBJDEBUG(**zval_pp,is_tmp)//操作資源的#define Z_RESVAL(zval)(zval).value.lval#define Z_RESVAL_P(zval_p)Z_RESVAL(*zval_p)#define Z_RESVAL_PP(zval_pp)Z_RESVAL(**zval_pp)

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆视频久久| 日韩欧美精品一区| 麻豆国产欧美日韩综合精品二区| 亚洲性色视频| 日本不卡高清| 亚洲久久视频| 亚洲一级在线| 国产精品成人a在线观看| 欧美日韩亚洲三区| 亚洲欧洲日韩| 免费黄网站欧美| 国产毛片久久久| 国产精品高潮呻吟久久久久| 国产精品密蕾丝视频下载| 日本欧美一区| 精品国产一区二区三区av片| 成人va天堂| 日韩影院免费视频| 国产精品视频一区二区三区综合| 精品久久久中文字幕| 热三久草你在线| 蜜桃视频欧美| 91国语精品自产拍| 国产欧美一区| 国产a久久精品一区二区三区| 麻豆91精品91久久久的内涵| 精品五月天堂| 99re国产精品| 亚洲欧美网站在线观看| 亚洲我射av| 亚洲精品亚洲人成在线观看| 久久精品三级| 69堂精品视频在线播放| 荡女精品导航| 最新亚洲激情| 免费看日韩精品| 欧美日韩91| 国产精品亚洲四区在线观看| 日本美女一区| 午夜视频精品| 久久99精品久久久久久园产越南 | 给我免费播放日韩视频| 狠狠久久婷婷| 日韩欧美自拍| 日韩精品电影| 欧美成人精品午夜一区二区| 久久成人精品| 麻豆成全视频免费观看在线看| 日韩一区二区三区在线看| 欧美日韩国产传媒| 青青久久av| 99精品网站| 国产精品黄色| 日韩高清在线一区| 美日韩精品视频| 欧美成a人片免费观看久久五月天| 亚洲国产欧美日本视频| 日韩精品亚洲专区| 亚洲福利免费| 激情欧美一区| 成人av二区| 日韩免费高清| 国产精品伦理久久久久久| 精品伊人久久久| 成人欧美一区二区三区的电影| 国产欧美一区二区三区精品酒店| 日本久久成人网| 最新国产拍偷乱拍精品| 亚洲精品午夜av福利久久蜜桃| 国产精品啊啊啊| 国产精品对白| 日本亚洲视频在线| 国产精品久久久久久久久久白浆 | 亚洲午夜91| 精品国产欧美日韩| 给我免费播放日韩视频| 日韩理论片av| 欧美特黄一级| 亚洲a级精品| 精品国产一级| 久久久国产亚洲精品| 美女日韩在线中文字幕| 天堂俺去俺来也www久久婷婷| 欧美日韩亚洲一区| 精品三级av在线导航| 日韩国产一区| 午夜精品影视国产一区在线麻豆| 国产精品宾馆| 丝袜av一区| 欧美一级精品| 亚洲女同一区| 国产欧美日韩一区二区三区四区| 国产日韩免费| 99久久婷婷| 欧美一区在线观看视频| 国内自拍视频一区二区三区| 欧美va亚洲va日韩∨a综合色| 国产精品日本欧美一区二区三区| 日韩极品在线观看| 国产美女高潮在线观看| 日韩在线a电影| 国产不卡一区| 亚洲精品在线a| 日韩欧美精品| 四虎国产精品免费久久| 国产一区调教| 视频一区视频二区中文| 国产探花一区| 91精品成人| 免费在线欧美黄色| 免费人成在线不卡| 蜜桃tv一区二区三区| 久久久国产精品网站| 一区二区三区国产盗摄| 麻豆精品视频在线观看免费| 99视频精品全国免费| 成人小电影网站| 国产欧美一区二区三区国产幕精品 | 综合一区二区三区| 国产在线不卡一区二区三区 | 伊人精品一区| 日韩精品91| 精品在线网站观看| 麻豆91小视频| 日本91福利区| 亚洲日本国产| 国产高清一区二区| 久久久久亚洲| 色爱av综合网| 亚洲手机视频| 成人av三级| 久久精品伊人| 国产在线视频欧美一区| 青青草伊人久久| 免费人成在线不卡| 爽好多水快深点欧美视频| 影视先锋久久| 精品在线91| 天堂网在线观看国产精品| 精品日产乱码久久久久久仙踪林| 免费一级欧美在线观看视频| 国产麻豆一区二区三区 | 欧美中文一区二区| 日韩精品一卡| 亚洲91视频| 9国产精品视频| 亚洲综合不卡| 鲁大师成人一区二区三区| 亚洲综合专区| 嫩草伊人久久精品少妇av杨幂| 91一区二区三区四区| 精品一区免费| 久久亚洲视频| 日韩综合一区二区三区| 国产精品一二| 欧美gv在线| 亚洲精品99| 国产日韩欧美| 九九精品调教| 免费欧美一区| 国产精品一区免费在线| 久久激情婷婷| 美国三级日本三级久久99| 国产精品亲子伦av一区二区三区 | 群体交乱之放荡娇妻一区二区| 久久久五月天| 日精品一区二区三区| 欧美日韩第一| 精品日韩一区| 欧美视频二区| 性欧美69xoxoxoxo| 卡一卡二国产精品| 亚洲开心激情| 日韩午夜黄色| 国产成人免费视频网站视频社区| 亚洲精品网址| 成人片免费看| 日本少妇精品亚洲第一区| 波多野结衣久久精品| 亚洲女人av| 国产成人免费| 国产精品三级| 亚洲精品免费观看| 日本久久精品| 欧美天堂一区二区| 爽爽淫人综合网网站 | av中文字幕在线观看第一页 | 一本一道久久a久久精品蜜桃| 国内不卡的一区二区三区中文字幕| 欧美精品黄色| 99热精品久久| 日韩精品免费一区二区三区| 欧美日韩亚洲一区在线观看| 国产精品88久久久久久| 欧美www视频在线观看| 亚洲ww精品| 亚洲18在线| 亚洲精品国产日韩| 亚洲毛片视频| 欧美另类中文字幕|