今天就跟大家聊聊有關如何使用php發布擴展信息,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
十余年的蚌山網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整蚌山建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“蚌山網站設計”,“蚌山網站推廣”以來,每個客戶項目都認真落實執行。
擴展可以發布 phpinfo()
或反射API要求的信息。我們一起來看一下。
本章不會太長,因為真的很簡單。
如果聲明了,一切都在聲明的 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 "<h4>" PIB_TXT "</h4>" 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 進程所使用的 SAPI 。phpinfo_as_text
字段告訴你,如果你準備寫入一個類似比如 php-fpm 的 “Web” 的 SAPI 或者寫入一個類似 php-cli 的 “text” 的(SAPI)。
能觸發你的 MINFO()
鉤子的是下面這些:
phpinfo()
函數php -i
、 php-cgi -i
、 php-fpm -i
。或者更抽象的表述就是 <SAPI_binary> - i
php --ri
或者用戶端的 ReflectionExtension::info()
注意:
要留意輸出的格式。如果你需要在 text 和 HTML 之間轉換格式,就研究一下
sapi_module.phpinfo_as_text
。你無法得知在用戶端擴展的信息是被如何調用的。
如果你要展示你的 INI 設置,只要在你的 MINFO()
中調用 DISPLAY_INI_ENTRIES()
宏即可。這個宏的解析看這里 display_ini_entries().
能觸發你的 MINFO()
鉤子的是下面這些:
phpinfo()
函數php -i
、 php-cgi -i
、 php-fpm -i
。或者更抽象的表述就是 <SAPI_binary> - i
php --ri
或者用戶端的 ReflectionExtension::info()
注意:
要留意輸出的格式。如果你需要在 text 和 HTML 之間轉換格式,就研究一下
sapi_module.phpinfo_as_text
。你無法得知在用戶端擴展的信息是被如何調用的。
如果你要展示你的 INI 設置,只要在你的 MINFO()
中調用 DISPLAY_INI_ENTRIES()
宏即可。這個宏的解析看這里 display_ini_entries().
反射大量使用你的zend_module_entry
結構。例如,當你調用ReflectionExtension::getVersion()
時,API 只會讀取zend_module_entry
結構的版本字段。
與發現函數相同,你的zend_module_entry
具有一個const struct _zend_function_entry * functions
成員,該成員用于注冊PHP函數。
基本上,PHP 用戶區反射 API 只會讀取你的zend_module_entry
結構并發布這些信息。它還可以使用你的module_number
來收集在引擎的不同位置注冊的擴展的信息。例如,ReflectionExtension::getINIentries()
或 ReflectionExtension::getClasses()
使用了這個。
看完上述內容,你們對如何使用php發布擴展信息有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。
網頁標題:如何使用php發布擴展信息
文章鏈接:http://vcdvsql.cn/article36/pepcpg.html
成都網站建設公司_創新互聯,為您提供網站制作、App設計、ChatGPT、全網營銷推廣、網站排名、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯