真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php如何發(fā)布擴(kuò)展信息

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為坡頭企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),坡頭網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。發(fā)布擴(kuò)展信息

擴(kuò)展可以發(fā)布 phpinfo()或反射API要求的信息。我們一起來(lái)看一下。

本章不會(huì)太長(zhǎng),因?yàn)檎娴暮芎?jiǎn)單。

MINFO( ) 掛鉤

如果聲明了,一切都在聲明的 MINFO()掛鉤中進(jìn)行。如果未聲明,則引擎將運(yùn)行默認(rèn)功能以打印有關(guān)擴(kuò)展名的信息。該功能只會(huì)打印擴(kuò)展程序的版本以及最終聲明的 INI條目 。

如果要加入此過(guò)程,則必須在擴(kuò)展結(jié)構(gòu)中聲明一個(gè) MINFO()hook。

注意

一切都在 ext / standard / info.c 中進(jìn)行,您可以閱讀該文件。引擎通過(guò)調(diào)用 php_info_print_module() 來(lái)打印有關(guān)PHP擴(kuò)展的信息

下面是一個(gè)簡(jiǎn)單的 MINFO()案例:

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

#define PIB_TXT  "PHPInternalsBook Authors"
#define PIB_HTML "

" PIB_TXT "

" 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 關(guān)閉 */ NULL, /* Request 初始化 */ NULL, /* Request 關(guān)閉 */ PHP_MINFO(pib), /* Module information */ "0.1", /* 擴(kuò)展的版本號(hào)寫(xiě)在這里 */ STANDARD_MODULE_PROPERTIES };

你要做的主要是處理 php_info_print_*()API,它允許你將信息打印到生成的輸出流中。如果你想要打印一些原始的信息,一個(gè)簡(jiǎn)單的 php_write()就足夠了。php_write()就是把你傳入的信息當(dāng)作 SAPI 輸出流的一個(gè)參數(shù), 而 php_info_print_*()API 也是一樣,但是之前會(huì)被按照要求格式化,如果想要 HTML 格式,則會(huì)使用 HTML 的 table-tr-td標(biāo)簽,如果不需要格式化成 HTML 的話(huà),就會(huì)簡(jiǎn)單的用空格間隔。

如你所見(jiàn),你必須 include ext/standard/info.h以引入 php_info_print_*()API ,并且你還需要引入 php/main/SAPI.h來(lái)獲得 sapi_module符號(hào)。這個(gè)符號(hào)是全局的,它代表了當(dāng)前 PHP 進(jìn)程所使用的 SAPI。phpinfo_as_text字段告訴你,如果你準(zhǔn)備寫(xiě)入一個(gè)類(lèi)似比如 php-fpm的 “Web” 的 SAPI 或者寫(xiě)入一個(gè)類(lèi)似 php-cli的 “text” 的(SAPI)。

能觸發(fā)你的 MINFO()鉤子的是下面這些:

調(diào)用用戶(hù)端的 phpinfo()函數(shù)php -i、 php-cgi -iphp-fpm -i?;蛘吒橄蟮谋硎鼍褪? - iphp --ri或者用戶(hù)端的 ReflectionExtension::info()

注意:

要留意輸出的格式。如果你需要在 text 和 HTML 之間轉(zhuǎn)換格式,就研究一下 sapi_module.phpinfo_as_text。你無(wú)法得知在用戶(hù)端擴(kuò)展的信息是被如何調(diào)用的。

如果你要展示你的 INI 設(shè)置,只要在你的 MINFO()中調(diào)用 DISPLAY_INI_ENTRIES()宏即可。這個(gè)宏的解析看這里 display_ini_entries().

能觸發(fā)你的 MINFO()鉤子的是下面這些:

調(diào)用用戶(hù)端的 phpinfo()函數(shù)php -i、 php-cgi -iphp-fpm -i?;蛘吒橄蟮谋硎鼍褪? - iphp --ri或者用戶(hù)端的 ReflectionExtension::info()

注意:

要留意輸出的格式。如果你需要在 text 和 HTML 之間轉(zhuǎn)換格式,就研究一下 sapi_module.phpinfo_as_text。你無(wú)法得知在用戶(hù)端擴(kuò)展的信息是被如何調(diào)用的。

如果你要展示你的 INI 設(shè)置,只要在你的 MINFO()中調(diào)用 DISPLAY_INI_ENTRIES()宏即可。這個(gè)宏的解析看這里 display_ini_entries().

關(guān)于反射 API 的說(shuō)明

反射大量使用你的zend_module_entry結(jié)構(gòu)。例如,當(dāng)你調(diào)用ReflectionExtension::getVersion()時(shí),API 只會(huì)讀取zend_module_entry結(jié)構(gòu)的版本字段。

與發(fā)現(xiàn)函數(shù)相同,你的zend_module_entry具有一個(gè)const struct _zend_function_entry * functions成員,該成員用于注冊(cè)PHP函數(shù)。

基本上,PHP 用戶(hù)區(qū)反射 API 只會(huì)讀取你的zend_module_entry結(jié)構(gòu)并發(fā)布這些信息。它還可以使用你的module_number來(lái)收集在引擎的不同位置注冊(cè)的擴(kuò)展的信息。例如,ReflectionExtension::getINIentries()ReflectionExtension::getClasses()使用了這個(gè)。
網(wǎng)站名稱(chēng):php如何發(fā)布擴(kuò)展信息
文章出自:http://weahome.cn/article/cghsjd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部