php扩展的用到的一些宏

编程入门 行业动态 更新时间:2024-10-08 13:31:59

<a href=https://www.elefans.com/category/jswz/34/1770834.html style=php扩展的用到的一些宏"/>

php扩展的用到的一些宏

说明
AC_MSG_CHECKING(message)在执行 configure 命令时输出“checking <message>”等信息。
AC_MSG_RESULT(value)取得 AC_MSG_CHECKING 的执行结果,一般情况下 value 应为 yes 或 no。
AC_MSG_ERROR(message)在执行 configure 命令时输出一条错误消息 message 并中止脚本的执行。
AC_DEFINE(name,value,description)向 php_config.h 添加一行定义:
  #define name value // description

(这对模块的条件编译很有用。)

AC_ADD_INCLUDE(path)添加一条编译器的包含路径,比如用于模块需要为头文件添加搜索路径。
AC_ADD_LIBRARY_WITH_PATH
(libraryname,librarypath)
指定一个库的连接路径。
AC_ARG_WITH(modulename,description,
unconditionaltest,conditionaltest)
这是一款比较强大的宏,用于将模块的描述 description 添加到“configure -help”命令的输出里面。PHP 会检查当前执行的 configure 脚本里面有没有-with-<modulename> 这个选项。 如果有则执行 unconditionaltest 语句(比如 -with-myext=yes 等), 此时,选项的值会被包含在 $withval 变量里面。否则就执行 conditionaltest 语句。
PHP_EXTENSION(modulename, [shared])

这个是配置你的扩展时 PHP 必定调用的一个宏。你可以在模块名后面提供第二个参数,用来表明是否将其编译为动态共享模块。这会导致在编译时为你的源码提供一个 COMPILE_DL_<modulename> 的定义。

AC_ARG_ENABLE

你可以使用AC_ARG_ENABLE来定义一个命令行选项。
这个宏接受三个参数
1.flag_base
2.该选项的帮助说明
3.当configure带该选项运行时所执行的代码,代码中的命令行变量enableval被设为此选项的值
其实应该还有一个就是缺省值。

Zend API中的宏

下面是一些引入到 Zend API 里面用于访问 zval 容器的 API 宏。

指向
Z_LVAL(zval)(zval).value.lval
Z_DVAL(zval)(zval).value.dval
Z_STRVAL(zval)(zval).value.str.val
Z_STRLEN(zval)(zval).value.str.len
Z_ARRVAL(zval)(zval).value.ht
Z_LVAL_P(zval)(*zval).value.lval
Z_DVAL_P(zval)(*zval).value.dval
Z_STRVAL_P(zval_p)(*zval).value.str.val
Z_STRLEN_P(zval_p)(*zval).value.str.len
Z_ARRVAL_P(zval_p)(*zval).value.ht
Z_LVAL_PP(zval_pp)(**zval).value.lval
Z_DVAL_PP(zval_pp)(**zval).value.dval
Z_STRVAL_PP(zval_pp)(**zval).value.str.val
Z_STRLEN_PP(zval_pp)(**zval).value.str.len
Z_ARRVAL_PP(zval_pp)(**zval).value.ht


PHP_MINIT_FUNCTION() 当PHP被装载时,模块启动函数即被Zend引擎调用,这里可以做一些初始化操作
PHP_MSHUTDOWN_FUNCTION() 当PHP完全关闭时,Zend引擎调用的函数,
PHP_RINIT_FUNCTION() 在每次PHP请求开始,请求前启动函数被调用。通常用于管理请求前逻辑。
PHP_RSHUTDOWN_FUNCTION() 在每次PHP请求结束后,请求前关闭函数被调用。经常应用在清理请求前启动函数的逻辑。
PHP_MINFO_FUNCTION() 调用phpinfo()时模块信息函数被呼叫,从而打印出模块信息。



PHP_FE是一个宏.
等于
#define ZEND_FENTRY(zend_name, name, arg_info, flags) { #zend_name, name, arg_info, (zend_uint) (sizeof(arg_info)/sizeof(struct _zend_arg_info)-1), flags },
只是做了一些初始化.
PHP_FE_END 等于 { NULL, NULL, NULL, 0, 0 }

后期慢慢增加.. 

更多推荐

php扩展的用到的一些宏

本文发布于:2024-02-14 14:18:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763832.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:php

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!