Heim  >  Artikel  >  Backend-Entwicklung  >  So veröffentlichen Sie erweiterte Informationen in PHP

So veröffentlichen Sie erweiterte Informationen in PHP

coldplay.xixi
coldplay.xixinach vorne
2020-07-28 16:53:481685Durchsuche

So veröffentlichen Sie erweiterte Informationen in PHP

Erweiterungsinformationen veröffentlicht

Erweitern kann Informationen zu

veröffentlichen oder API-Anforderungen widerspiegeln. Werfen wir einen Blick darauf. phpinfo()

Dieses Kapitel wird nicht zu lang sein, weil es wirklich einfach ist.

Verwandte Lernempfehlungen:

PHP-Programmierung vom Einstieg bis zur Beherrschung

MINFO()-Hook

Wenn deklariert, funktioniert alles es im

-Hook der Deklaration. Wenn nicht deklariert, führt die Engine eine Standardfunktion aus, um Informationen über die Erweiterung zu drucken. Diese Funktion gibt nur die Version der Erweiterung und den endgültigen deklarierten INI-Eintrag aus. MINFO()

Wenn Sie an diesem Prozess teilnehmen möchten, müssen Sie einen

-Hook in der Erweiterungsstruktur deklarieren. MINFO()

HINWEIS

Alles geschieht in ext/standard/info.c, das Sie lesen können. Die Engine druckt Informationen über PHP-Erweiterungen, indem sie php_info_print_module() aufruft.

Hier ist ein einfacher

Fall: 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
};

So veröffentlichen Sie erweiterte Informationen in PHP

Das Wichtigste, was Sie tun müssen ist die verarbeitende

API, mit der Sie Informationen in den generierten Ausgabestream drucken können. Wenn Sie einige Rohinformationen ausdrucken möchten, reicht ein einfaches php_info_print_*() aus. php_write() dient dazu, die von Ihnen übergebenen Informationen als Parameter des SAPI-Ausgabestreams zu behandeln. Die php_write() API ist dieselbe, wird jedoch gemäß den vorherigen Anforderungen formatiert. Wenn Sie das HTML-Format wünschen, verwenden Sie es Die HTML-Tags php_info_print_*() table-tr-td werden einfach durch Leerzeichen getrennt, wenn sie nicht in HTML formatiert werden müssen.

Wie Sie sehen, müssen Sie

ext/standard/info.h einschließen, um die API zu importieren, und Sie müssen auch php_info_print_*()php/main/SAPI einschließen .h, um das -Symbol zu erhalten. Dieses Symbol ist global und stellt das vom aktuellen PHP-Prozess verwendete sapi_moduleSAPI dar. Das Feld sagt Ihnen, ob Sie ein „Web“-SAPI wie phpinfo_as_textphp-fpm oder einen „Text“ wie php-cli (SAPI) schreiben möchten.

Was Ihren

-Hook auslösen kann, ist Folgendes: MINFO()

    Rufen Sie die
  • -Funktion des Clients auf phpinfo()
  • , php -i, php-cgi -i . Oder ein abstrakterer Ausdruck ist php-fpm -i<sapi_binary> - i</sapi_binary>
  • oder der php --riReflectionExtension::info()
des Kunden. Hinweis:

sollte auf die Ausgabe achten Format. Wenn Sie zwischen Text und HTML konvertieren müssen, schauen Sie sich

an. Sie haben keine Möglichkeit zu erfahren, wie die erweiterten Informationen auf der Clientseite heißen. sapi_module.phpinfo_as_text

Wenn Sie Ihre INI-Einstellungen anzeigen möchten, rufen Sie einfach das Makro

in Ihrem MINFO() auf. Eine Analyse dieses Makros finden Sie unter display_ini_entries().DISPLAY_INI_ENTRIES()

Was Ihren

-Hook auslösen kann, ist Folgendes: MINFO()

    Rufen Sie die benutzerseitige
  • -Funktion phpinfo()
  • ,
  • , php -i. Oder ein abstrakterer Ausdruck ist php-cgi -iphp-fpm -i<sapi_binary> - i</sapi_binary>
  • oder der
  • php --riReflectionExtension::info()
des Kunden. Hinweis:

sollte auf die Ausgabe achten Format. Wenn Sie zwischen Text und HTML konvertieren müssen, schauen Sie sich

an. Sie haben keine Möglichkeit zu erfahren, wie die erweiterten Informationen auf der Clientseite heißen.

sapi_module.phpinfo_as_text

Wenn Sie Ihre INI-Einstellungen anzeigen möchten, rufen Sie einfach das Makro
in Ihrem

auf. Eine Analyse dieses Makros finden Sie unter display_ini_entries().MINFO()DISPLAY_INI_ENTRIES()Erklärung zur Reflection-API

Reflection nutzt Ihre

-Struktur umfassend. Wenn Sie beispielsweise

aufrufen, liest die API nur das Versionsfeld der zend_module_entry-Struktur. ReflectionExtension::getVersion()zend_module_entry Genau wie beim Erkennen von Funktionen verfügt Ihr

über ein

-Mitglied, das zum Registrieren von PHP-Funktionen verwendet wird. zend_module_entry

Im Grunde liest die PHP-Userland-Reflection-API einfach Ihre zend_module_entry-Struktur und veröffentlicht diese Informationen. Es kann auch Ihr module_number verwenden, um Informationen über Erweiterungen zu sammeln, die an verschiedenen Stellen in der Engine registriert sind. Verwenden Sie dies beispielsweise ReflectionExtension::getINIentries() oder ReflectionExtension::getClasses().

Das obige ist der detaillierte Inhalt vonSo veröffentlichen Sie erweiterte Informationen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:PHP-HooksNächster Artikel:PHP-Hooks