鍍金池/ 問答/PHP/ phpstorm查看方法的實現(xiàn)

phpstorm查看方法的實現(xiàn)

請問大神們,我在phpstorm中ctrl+右鍵點擊進入一個方法,但是這個方法是一個空方法,請問他的具體實現(xiàn)在哪里呢?例如str_replace這個函數(shù):

點擊該方法
clipboard.png
進入到:

clipboard.png

但是這里的方法是空的,那他是怎么實現(xiàn)替換功能的呢?謝謝!

回答
編輯回答
不討喜

github 搜索php 看源碼

2017年10月26日 10:00
編輯回答
亮瞎她

那就得看底層實現(xiàn)了

2018年2月22日 10:11
編輯回答
初念
\\php-7.1.0\\ext\\standard\\string.c line:4091
PHP_FUNCTION(str_replace)

/* Phpstorm中的方法定義實際是加載了一個php文件,以供IDE建立函數(shù)索引,該文件列出了各函數(shù)定義及參數(shù)
實際方法的實現(xiàn)需要閱讀源碼 */

// 核心函數(shù):
#define php_memnstr zend_memnstr
static zend_always_inline const char *
zend_memnstr(const char *haystack, const char *needle, size_t needle_len, const char *end)

// 功能:在字符串中搜索needle出現(xiàn)的位置

static zend_string *php_str_to_str_ex(zend_string *haystack,
    char *needle, size_t needle_len, char *str, size_t str_len, zend_long *replace_count)
static zend_string *php_str_to_str_i_ex(zend_string *haystack, char *lc_haystack,
    zend_string *needle, char *str, size_t str_len, zend_long *replace_count)

// 功能:在haystack中搜索needle,并將其替換為str,i版本為大小寫不敏感

static zend_string* php_char_to_str_ex(zend_string *str, char from, char *to, size_t to_len, int case_sensitivity, zend_long *replace_count)

// 功能:將單字符search替換為目標repalce

static zend_long php_str_replace_in_subject(zval *search, zval *replace, zval *subject, zval *result, int case_sensitivity)

// 功能:將subject中的search字符串替換為replace字符串,并返回替換次數(shù)
2018年2月7日 20:10