• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php如何发布扩展信息

php 搞代码 4年前 (2022-01-20) 16次浏览 已收录 0个评论
文章目录[隐藏]

¥本文来%源[email protected]搞@^&代*@码)网5搞gaodaima代码

发布扩展信息

扩展可以发布 phpinfo() 或反射API要求的信息。我们一起来看一下。

本章不会太长,因为真的很简单。

相关学习推荐:PHP编程从入门到精通

MINFO( ) 挂钩

如果声明了,一切都在声明的 MINFO() 挂钩中进行。如果未声明,则引擎将运行默认功能以打印有关扩展名的信息。该功能只会打印扩展程序的版本以及最终声明的 INI条目 。

如果要加入此过程,则必须在扩展结构中声明一个 MINFO() hook。

注意

一切都在 ext / standard / info.c 中进行,您可以阅读该文件。引擎通过调用 php_info_print_module() 来打印有关PHP扩展的信息

下面是一个简单的 MINFO() 案例:

#include "php/main/SAPI.h"
#include "ext/standard/info.h"

#define PIB_TXT  "PHPInternalsBook Authors"
#define PIB_HTML "<h3>" PIB_TXT "</h3>"

PHP_MINFO_FUNCTION(pib)
{
    time_t t;
    char cur_time[32];

    time(&t);
    php_asctime_r(localtime(&t), cur_time);

    php_info_print_table_start();
        php_info_print_table_colspan_header(2, "PHPInternalsBook");
        php_info_print_table_row(2, "Current time", cur_time);
    php_info_print_table_end();

    php_info_print_box_start(0);
        if (!sapi_module.phpinfo_as_text) {
            php_write(PIB_HTML, strlen(PIB_HTML));
        } else {
            php_write(PIB_TXT, strlen(PIB_TXT));
        }
    php_info_print_box_end();
}

zend_module_entry pib_module_entry = {
    STANDARD_MODULE_HEADER,
    "pib",
    NULL, /* Function 入口 */
    NULL, /* Module 初始化 */
    NULL, /* Module 关闭 */
    NULL, /* Request 初始化 */
    NULL, /* Request 关闭 */
    PHP_MINFO(pib), /* Module information */
    "0.1", /* 扩展的版本号写在这里 */
    STANDARD_MODULE_PROPERTIES
};

你要做的主要是处理 php_info_print_*() API,它允许你将信息打印到生成的输出流中。如果你想要打印一些原始的信息,一个简单的 php_write() 就足够了。php_write() 就是把你传入的信息当作 SAPI 输出流的一个参数, 而 php_info_print_*() API 也是一样,但是之前会被按照要求格式化,如果想要 HTML 格式,则会使用 HTML 的 table-tr-td 标签,如果不需要格式化成 HTML 的话,就会简单的用空格间隔。

如你所见,你必须 include ext/standard/info.h 以引入 php_info_print_*() API ,并且你还需要引入 php/main/SAPI.h 来获得 sapi_module 符号。这个符号是全局的,它代表了当前 PHP 进程所使用的 SAPIphpinfo_as_text 字段告诉你,如果你准备写入一个类似比如 php-fpm 的 “Web” 的 SAPI 或者写入一个类似 php-cli 的 “text” 的(SAPI)。

能触发你的 MINFO() 钩子的是下面这些:

  • 调用用户端的 phpinfo() 函数
  • php -iphp-cgi -iphp-fpm -i 。或者更抽象的表述就是 <SAPI_binary> - i
  • php --ri 或者用户端的 ReflectionExtension::info()

注意:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php如何发布扩展信息

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址