PHP內核之PHP_FUNCTION宏定義

平常我們查看php源代碼的時候,經常會看到有以下代碼的存在:



那麼,這其中的PHP_FUNCTION到底是什麼呢?現在開始,來看看他到底是什麼鬼東西。

大寫的,猜測一下,應該是宏定義,搜索,果然在源碼的php-5.6.22-src\main\php.h文件裏面,大概在347行


接着搜索ZEND_FUNCTION這個宏定義,在php-5.6.22-src\Zend\zend_API.h文件找到,大概在68行


幸運的是,還可以在這個文件裏面找到接下來的ZEND_NAMED_FUNCTION宏定義和ZEND_FN宏定義,就在剛剛找到的ZEND_FUNCTION宏定義上方


接着其實就是INTERNAL_FUNCTION_PARAMETERS宏定義,可以在php-5.6.22-src\Zend\zend.h文件裏面找到,大概是290行,它其實是一些固定的參數

這些定義串聯的步驟如下(以函數strpos爲例子):


通過上面的流程圖可以很清晰的觀察到PHP_FUNCTION的展開形式。

PS:上面還可以接着展開TSRMLS_DC宏定義,可以在php-5.6.22-src\TSRM\TSRM.h文件166行找到,展開後爲


void zif_name(int ht, zval *return_value, zval **return_value_ptr, zval *this_ptr, intreturn_value_used, void ***tsrm_ls)







發佈了45 篇原創文章 · 獲贊 25 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章