php扩展开发如何在内核api中找原有php函数

刚刚学习php扩展的新手。如果我想找php现有的函数,如何在内核中找呢?比如说var_dump,print_r,或者mysql,mysqli的函数应该如何找,如何调用呢?

阅读 5.1k
3 个回答

可以用这个 {OpenGrok 搜索一下,搜索之前先选择PHP版本,比如搜索函数,在 Definition 搜索框中输入函数名即可。

例如搜索 var_dump函数,就可以搜索到ext/standard/php_var.h头文件,进而可以找到 ext/standard/php_var.c文件中的函数实现:PHPAPI void php_var_dump(zval **struc, int level TSRMLS_DC) 函数.

调用的话引入头文件,然后调用PHPAPI定义的函数名就可以了吧

【转】如何迅速找到PHP底层源码中找到指定函数的实现位置

查看PHP函数的C语言实现:
cd php-src
查找 grep -rn "PHP_FUNCTION(socket_accept)" ./ext
返回 ./ext/sockets/sockets.c:938:PHP_FUNCTION(socket_accept)
查找 grep -rn "PHP_FUNCTION(array_merge)" ./ext
返回 ./ext/standard/array.c:2266:PHP_FUNCTION(array_merge)
可以看出,PHP库函数的基本都在php-src/ext目录下,里面有具体函数库比如socket,一般的函数基本都在标准库standard.

PHP源码的几个重要目录:
ext(扩展) 108M
Zend(引擎) 9.2M
sapi(cli/cgi/mod_php/fpm) 3.1M

@eechen

继续来推荐官网的一个工具,域名是 http://lxr.php.net,可以让你迅速查到定义