欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

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

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

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

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

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

          相關(guān)學(xué)習(xí)推薦:PHP編程從入門(mé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 "<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 關(guān)閉 */     NULL, /* Request 初始化 */     NULL, /* Request 關(guān)閉 */     PHP_MINFO(pib), /* Module information */     "0.1", /* 擴(kuò)展的版本號(hào)寫(xiě)在這里 */     STANDARD_MODULE_PROPERTIES };

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

          你要做的主要是處理 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 ?;蛘吒橄蟮谋硎鼍褪? <SAPI_binary> - i
          • php --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 -i 、 php-fpm -i ?;蛘吒橄蟮谋硎鼍褪? <SAPI_binary> - i
          • php --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è)。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)