bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

PHP擴展開發(fā)中什么函數(shù)返回值-創(chuàng)新互聯(lián)

PHP擴展開發(fā)中什么函數(shù)返回值,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司專注于白城企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都做商城網(wǎng)站。白城網(wǎng)站建設(shè)公司,為白城等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

API里面提供的宏定義來返回,在一定程度上這么說是不正確的,其實PHP擴展里面所有的函數(shù)的返回值都是通過一個名為return_value的變量傳
遞的,這個變量同時也是函數(shù)中的一個參數(shù),在PHP_FUNCTION()原型中定義。該參數(shù)總是包含有一個事先申請好空間的zval(關(guān)于zval是
PHP擴展開發(fā)里面比較復雜的部分,在后面的接收參數(shù)一文中再介紹)容器,并給它賦值為NULL,所以即使我們沒有聲明return_value,也可以
通過直接訪問它的成員而給它賦值。

在一個PHP擴展函數(shù)中,設(shè)置函數(shù)返回值,使用以下5種方式都是正確的:

RETURN_LONG(42);

RETVAL_LONG(42);
return;

ZVAL_LONG(return_value, 42);
return;

Z_TYPE_P(return_value) = IS_LONG;
Z_LVAL_P(return_value) = 42;
return;

return_value->type = IS_LONG;
return_value->value.lval = 42;
return;

關(guān)于ZVAL_LONG、Z_TYPE_P等宏在后面的文章會介紹。其實我們可以看到,RETURN_LONG是對RETVAL_LONG的再次封裝,不用我們顯式return。正如在第一篇快速入門里面介紹的,Zend API里面針對函數(shù)返回值提供了大量的宏定義:

RETURN_xxx系列宏定義:

RETURN_RESOURCE(resource)返回一個資源
RETURN_BOOL(bool)返回一個布爾值
RETURN_NULL()返回一個空值
RETURN_LONG(long)返回一個長整數(shù)
RETURN_DOUBLE(double)返回一個雙精度浮點數(shù)
RETURN_STRING(string, duplicate)返回一個字符串。duplicate表示這個字符是否使用 strdup()進行復制
RETURN_STRINGL(string, length, duplicate)返回一個定長的字符串。其余跟 RETURN_STRING 相同。這個宏速度更快而且是二進制安全的
RETURN_EMPTY_STRING()返回一個空字符串
RETURN_FALSE返回一個布爾值假
RETURN_TRUE返回一個布爾值真

RETVAL_xxx系列宏定義:

RETVAL_RESOURCE(resource)設(shè)定返回值為指定的一個資源
RETVAL_BOOL(bool)設(shè)定返回值為指定的一個布爾值
RETVAL_NULL設(shè)定返回值為空值
RETVAL_LONG(long)設(shè)定返回值為指定的一個長整數(shù)
RETVAL_DOUBLE(double)設(shè)定返回值為指定的一個雙精度浮點數(shù)
RETVAL_STRING(string, duplicate)設(shè)定返回值為指定的一個字符串,duplicate含義同 RETURN_STRING
RETVAL_STRINGL(string, length, duplicate)定返回值為指定的一個定長的字符串。其余跟RETVAL_STRING相同。這個宏速度更快而且是二進制安全的
RETVAL_EMPTY_STRING設(shè)定返回值為空字符串
RETVAL_FALSE設(shè)定返回值為布爾值假
RETVAL_TRUE設(shè)定返回值為布爾值真

除了使用RETURN_xxx系列宏定義之外,使用其它的方式,我們都需要顯式的使用return語句。如果需要返回的是像數(shù)組和對象這樣的復雜類
型的數(shù)據(jù),那就需要先調(diào)用array_init()和object_init(),也可以使用相應(yīng)的hash函數(shù)直接操作return_value,由于
這個過程比較復雜,沒有相應(yīng)的宏輔助我們,在后面介紹數(shù)組和對象類型時再專門介紹。下面看一個例子,使用上面我們提到的5種方式。

在頭文件中加入函數(shù)聲明:


實現(xiàn)函數(shù):

PHP_FUNCTION(return_value_way1)
{
    RETURN_LONG(42);
}

PHP_FUNCTION(return_value_way2)
{
    RETVAL_LONG(42);
    return;
}

PHP_FUNCTION(return_value_way3)
{
    ZVAL_LONG(return_value, 42);
    return;
}

PHP_FUNCTION(return_value_way4)
{
    Z_TYPE_P(return_value) = IS_LONG;
    Z_LVAL_P(return_value) = 42;
    return;
}

PHP_FUNCTION(return_value_way5)
{
    return_value->type = IS_LONG;
    return_value->value.lval = 42;
    return;
}

注冊擴展函數(shù)到函數(shù)表,這幾個函數(shù)都不需要參數(shù),用NULL表示:


最后編譯擴展,編寫簡單的測試腳本后運行

關(guān)于PHP擴展函數(shù)返回值就介紹這么多了。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

網(wǎng)站標題:PHP擴展開發(fā)中什么函數(shù)返回值-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://vcdvsql.cn/article30/jihso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)微信小程序面包屑導航服務(wù)器托管網(wǎng)站內(nèi)鏈做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司