php扩展开发,调用php函数

php zend 调用 文件 编程技术
发布日期 2023-06-06 更新日期 2023-06-06 阅读次数 100 文章字数 704

如何在php扩展中,调用现有的php函数呢?比如var_dump

如果你有一定的C语言基础,那么按照正常的开发流程,引入头文件,再调用函数名即可。

下面以var_dump举个例子:

一、在扩展中找到var_dump的头文件。

经过查找,发现该头文件ext/standard/php_var.h,进一步找到c文件为ext/standard/var.c,当然了定义都在头文件里实现则在c文件里。我们只需要引入头文件即可。于是

#include "ext/standard/php_var.h"

二、调用php api

查看头文件中的定义,它定义的php api函数名称是:php_var_dump(zval *struce, int level)

所以第一个参数是zval *类型,第二个参数是int类型(通过查看源码发现是缩进,应该大于等于0,如果是2标识缩进2字符)

于是,试着打印一下$_SERVER,和$_GET,例子如下:

    //先尝试加载$_SERVER,默认情况下可能为空
    zend_is_auto_global_str("_SERVER", sizeof("_SERVER") - 1);
    //取$_SERVER
    zval *server = zend_hash_str_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER") - 1);

    php_var_dump(server,1);  //php_var_dump第一个参数,只能是zval *,第二个是缩进,0-n正数
    
    
    //再测试var_dump($_GET)
    zend_is_auto_global_str("_GET", sizeof("_GET") - 1);
    zval *get = zend_hash_str_find(&EG(symbol_table), "_GET", sizeof("_GET") - 1);
    php_var_dump(get,1);

 


文章作者: 朱丰华

文章链接: https://smart.52dixiaowo.com/blog/post-425.html

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。

php zend 调用 文件

发表评论

相关推荐
朱丰华   |   7个月前   |   git

git从缓存中移除数据git rm --cached

408    评论    点赞
朱丰华   |   7个月前   |   php

php判断是否被iframe

221    评论    点赞
朱丰华   |   1年前   |   页面 · 监听

iframe子父页面信息传递与监听

375    评论    点赞
朱丰华   |   1年前   |   linux · upx

Linux下安装UPX

406    评论    点赞
朱丰华   |   1年前   |   php

php正则表达式定界符:异常Delimiter must not be alphanumeric or backslash

190    评论    点赞
朱丰华   |   1年前   |   请求 · 一个

ab测压命令,apache测压工具

172    评论    点赞
朱丰华   |   1年前   |   php · 缓存 · opcache

php 加速、提高并发opcache

198    评论    点赞
朱丰华   |   1年前   |   go · gopath

Go自定义包并安装(GOPATH)

117    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

113    评论    点赞
朱丰华   |   1年前   |   变量 · mysql · sql · 用户

MySQL用户自定义变量

95    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

115    评论    点赞
朱丰华   |   1年前   |   sed · 文件

Shell 指定行处理head、tail、sed

156    评论    点赞
朱丰华   |   1年前   |   linux · 内容

linux环境下,对于一个大文件,如何查看其中某行的内容

68    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 字符串

如何在 PHP 中将字符串的第一个字母转换为大写

149    评论    点赞
朱丰华   |   1年前   |   linux · 文件 · 行数

linux 取得文件行数

50    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 正则

php正则表达式原生字符

85    评论    点赞
朱丰华   |   1年前   |   字符 · php · 比较

PHP比较字符串大小相关函数

111    评论    点赞
朱丰华   |   1年前   |   下载 · 请求

idm、浏览器下载发送两次下载请求

137    评论    点赞
朱丰华   |   1年前   |   文件 · linux · 修改

linux文件的三个时间atime,mtime,ctime分别表示什么?

275    评论    点赞
朱丰华   |   1年前   |   linux · 文件 · 统计

linux递归统计文件夹下的文件数量

166    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞