2015-10-09 21 views
1

在寫和看一些PHP擴展的源代碼,我注意到一些使用長型標誌,以解析布爾參數:PHP內部 - 讓一個boolean參數

bool new_map_embed; 

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &new_map_embed) == FAILURE) { 
    RETURN_FALSE; 
} 

這是爲什麼?爲什麼不使用b標誌呢?

回答

-1

您可以使用類似:

zend_bool new_map_embed; 

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &new_map_embed) == FAILURE) { 
    RETURN_FALSE; 
} 

請看文件zend_builtin_functions.c裏面真實的例子,然後搜索zend_bool,你將看到如何PHP使用它。

+1

我知道我可以使用'b'我的問題是爲什麼解析只要'l'是一種常見的做法 –

+0

@ShlomiHassid爲什麼你認爲這是常見的做法?事實並非如此。 – NikiC

+0

@Nikic我看到它越來越多,只是想知道爲什麼,這是一個很好的做法 –

1

程序員很可能犯了一個錯誤(或許他們不知道b存在?),或者該參數實際上不是布爾值(可能接受其他值)。這不是常見的做法。

在PHP 5中,IS_BOOL其存儲在同一個地方IS_LONG值,所以你可能已經原諒的思想,你應該在這裏使用l