phpstorm查看方法的实现
问题描述:
请问大神们,我在phpstorm中ctrl+右鍵点击进入一个方法,但是这个方法是一个空方法,请问他的具体实现在哪里呢?例如str_replace这个函数:
点击该方法
进入到:
但是这里的方法是空的,那他是怎么实现替换功能的呢?谢谢!
第 1 个答案:
\\php-7.1.0\\ext\\standard\\string.c line:4091 PHP_FUNCTION(str_replace) /* Phpstorm中的方法定义实际是加载了一个php文件,以供IDE建立函数索引,该文件列出了各函数定义及参数 实际方法的实现需要阅读源码 */ // 核心函数: #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出现的位置 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字符串,并返回替换次数
第 2 个答案:
那就得看底层实现了
第 3 个答案:
github 搜索php 看源码
懒加载原理是什么?