2016-11-16 60 views
1

我注意到在95%的情況下,在PHP_FUNCTION之內評估zend_parse_parametersFAILURE之後始終只有return;。它沒有任何意義,因爲PHP_FUNCTION預計會返回ZVAL。我不確定什麼默認值return_value是什麼時候沒有明確設置。zend_parse_parameters應從PHP_FUNCTION內部返回zval

我搜索了所有php源代碼以及與php捆綁在一起的所有擴展源。在95%的情況下,他們只是使用回報。在一些擴展 - dateintl他們做RETURN_FALSE。在由莎拉科爾蒙寫的an article她使用RETURN_NULL()

我強烈地感到我應該使用RETURN_FALSE對於PHP_FUNCTION s更有意義的大多數情況。我在某處錯過了什麼嗎?

回答

1

如果zend_parse_parameters()失敗,通常只需要return。也就是說documented in the PHP manual

如果zend_parse_parameters沒有收到什麼是黑客爲正確的參數指定的,收到的參數不能轉換與type_spec錯誤,以符合將提高,而按照慣例,黑客應該return立即。

According to the PHP manual,的return_value默認爲IS_NULL類型:

指針,該可填充有傳遞給用戶的返回值的變量PHP。默認類型是IS_NULL。

此外,PHP manual notes

如果傳遞給功能的參數是不是預計,例如使其中一個字符串被預期的陣列,該函數的返回值是未定義的。在這種情況下,它可能會返回NULL,但這只是一個約定,不能被依賴。

所以未能zend_parse_parameters()的情況下,實際的返回值被視爲實現細節,因此,簡單地return ING似乎是最合適的 - 只是讓Zend引擎決定有關默認。