如何迅速找到PHP底层源码中找到指定函数的实现位置
比如现在要找var_dump()
函数到底是怎么实现的?
回复内容:
在学习PHP的过程中,希望了解在PHP底层如何实现的某函数,但PHP源码那么多,我该如何去寻找。
比如现在要找var_dump()
函数到底是怎么实现的?
采纳的那个方案不错,但是不够方便,官网其实提供了一个工具,域名是 http://lxr.php.net,可以让你迅速查到定义
查看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
看zend 源码,大部分是用c写的,
http://rapheal.sinaapp.com/2013/11/14/php_zend_lex/
直接查某个函数是怎么实现的,查api来得方便,或者直接搜索引擎搜索,源代码的话也没什么捷径,你不熟的话只能一层层的查找,你熟悉之后,就可以直接进去相对应的文件夹或者文件查找。
另,有些开发工具是可以右键进入到定义的函数方法的。