使用zend_eval_string在C++中执行PHP语句

 在编写PHP的扩展时,如果想调用PHP的内置函数的话,可以使用zend_eval_string,不过可惜的是官方的文档不能用不全两个字来形容。API Functions在php.net是找不到的,别的地方的文档上只有个列表,连作用都没说明,只能看名字来猜个大概,然后在有需要的时候去读源码来用,不然别无他法了。

zend_eval_string — …
说明
#include
int zend_eval_string ( char* str, zval* retval_ptr,
char* string_name, magic TSRMLS_DC )

参数
str

retval_ptr

string_name

TSRMLS_DC

返回值

呃,文档就这么坑爹,啥都没说。

array_init(return_value);
zend_eval_string("array_values(array(‘1’=>’a’,2=>’b’,3));",
return_value, "snake_zero" TSRMLS_CC);

用法如上,第一个参数是字符串型的,就是要执行的PHP代码。
第二个是返回的值,因为是zval型的,所以得先做下初始化,直接操作return_value这个变量是可以直接返回给外面调用的PHP的。
第三个也是字符串,可以随便写,出错了提示地方的,后面接一个变态宏TSRMLS_CC。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注