Heim > Backend-Entwicklung > PHP-Problem > Wie initialisiere ich Erweiterungen in PHP?

Wie initialisiere ich Erweiterungen in PHP?

coldplay.xixi
Freigeben: 2023-03-01 19:52:01
Original
2748 Leute haben es durchsucht

So initialisieren Sie die PHP-Erweiterung: Ändern Sie zuerst die Prototyp-Deklaration in der Nähe der User-Space-Funktion in [php_hello.h], ändern Sie dann die Datei [hello.c] und fügen Sie dann oben ein [#] hinzu Datei [hello.c] include]; schließlich [hello_world] ändern, um den Wert von INI zu verwenden.

Wie initialisiere ich Erweiterungen in PHP?

So initialisieren Sie die Erweiterung in PHP:

Initialisieren Sie die Erweiterungskonfiguration über php.ini


Die Zend-Engine bietet zwei Möglichkeiten, INI-Werte zu verwalten.

Angenommen, Sie möchten in php.ini einen Wert für Ihre Erweiterung hello.greeting definieren, der die Begrüßungszeichenfolge enthält, die in der Funktion hell_world() verwendet wird. Sie müssen Code zu hello.c und php_hello.h hinzufügen und einige wichtige Änderungen an der hell_module_entry-Struktur vornehmen.

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung

Schritt 1: Ändern Sie php_hello.h in der Nähe des User-Space-Funktionsprototyps Deklaration

 PHP_MINIT_FUNCTION(hello);
PHP_MSHUTDOWN_FUNCTION(hello);// 初始化关键点
PHP_FUNCTION(hello_world);// 其它通用
PHP_FUNCTION(hello_long);
Nach dem Login kopieren

2. Schritt 2: Ändern Sie die hello.c-Datei

, um das hello_module_entry in der aktuellen Version zu entfernen und es durch die folgende Liste zu ersetzen:

zend_module_entry hello_module_entry = {
     #if ZEND_MODULE_API_NO >= 20010901
          STRANDARD_MODULE_HEADER,
     #endif
          PHP_HELLO_WORLD_EXTENAME,
          hello_functions,
          PHP_MINIT(hello),
          PHP_MSHUTDOWN(hello),
          NULL,NULL,NULL,
     #if ZEND_MODULE_API_NO >= 20010901
          PHP_HELLO_WORLD_VERSION,
     #endif
          STANDARD_MODULE_PROERTIES
}
 
PHP_INI_BEGIN()
PHP_INI_ENTRY("hello.greeting","hello world",PHP_INI_ALL,NULL)
PHP_INI_END()
 
PHP_MINIT_FUNCTION(hello)
{
     REGISTER_INI_ENTRIES();
     return SUCCESS;
}
 
PHP_MSHUTDOWN_FUNCTION(hello)
{
     UNREGISTER_INI_ENTRIES();
     return SUCCESS;
}
Nach dem Login kopieren

3. Jetzt müssen Sie nur noch ein hello.c daneben #include oben in der Datei #include hinzufügen, damit die richtige Header-Datei vorhanden ist, die INI unterstützt kann aktiviert werden:

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "php_hello.h"
Nach dem Login kopieren

4. Abschließend können Sie hello_world ändern, um den Wert von INI zu verwenden:

PHP_FUNCTION(hello_world)
{
     RETURN_STRING(INI_STR("hello.greeting"),1);
}
Nach dem Login kopieren

ABER: Sie müssen den von INI_STR() zurückgegebenen Wert kopieren. Dies liegt daran, dass es sich vor der Eingabe in den PHP-Variablenstapel um eine statische Zeichenfolge handelt. Wenn Sie versuchen, die zurückgegebene Zeichenfolge zu ändern, wird die PHP-Ausführungsumgebung tatsächlich instabil oder stürzt sogar ab.

Zusammenfassung:

  • verwendet tatsächlich INI_STR(), um die aktuelle Zeichenfolge des hello.greeting-Eintrags abzurufen.

  • Wenn Sie andere Parameter erhalten möchten, können Sie etwas wie INI_INT usw. verwenden. Da die Parameter unterschiedlich eingestellt sind, sind Funktionen wie ini_set nicht einfach zu verwenden.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich Erweiterungen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage