Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion des PHP-Quellcodes 6: Über die Funktion stream_get_wrappers

Eine kurze Diskussion des PHP-Quellcodes 6: Über die Funktion stream_get_wrappers

不言
不言Original
2018-06-28 16:47:311664Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Quellcode 6 vor: Die Funktion stream_get_wrappers hat einen bestimmten Referenzwert. Jetzt können Freunde in Not darauf verweisen.

stream_get_wrappers

(PHP 5)

stream_get_wrappers – Gibt eine Liste der registrierten Datenströme zurück
Beschreibung

array stream_get_wrappers ( void )

Gibt ein indiziertes Array zurück, das den Namen aller Streams enthält Stream-Wrapper, die auf dem laufenden System verfügbar sind.

Während der Implementierung anderer Funktionen müssen Sie die Quelle der Variablen url_stream_wrappers_hash
kennen und feststellen, dass diese Funktion auch Daten direkt aus der Variablen url_stream_wrappers_hash also ist der Tracking-Prozess für diese Funktion und die Variable url_stream_wrappers_hash abgeschlossen.
Zuerst ist die Implementierung dieser Erweiterung in der Datei streamsfuncs.c im Standardordner enthalten.
Der Pfad lautet wie folgt:

   ==>PHP_FUNCTION(stream_get_wrappers)        //    streamsfuncs.c 548行
   ==>#define php_stream_get_url_stream_wrappers_hash() _php_stream_get_url_stream_wrappers_hash(TSRMLS_C)    //    php_stream.h    552行
   ==>PHPAPI HashTable *_php_stream_get_url_stream_wrappers_hash(TSRMLS_D)        //    streams/streams.c    58行
   ==>static HashTable url_stream_wrappers_hash;    //    全局静态变量,

Aus dem Code dieser Funktion können wir das erkennen Durchläuft direkt den Rückgabewert der Funktion php_stream_get_url_stream_wrappers_hash( ) und generiert ein String-Array

Funktion php_stream_get_url_stream_wrappers_hash()

Die Funktion ruft die Daten in der globalen Variablen direkt auf. Der Initialisierungs- und Registrierungsprozess dieser Variablen wird wie folgt verfolgt:

url_stream_wrappers_hash初始化位置:==>int php_init_stream_wrappers(int module_number TSRMLS_DC)    //    streams.c     1395行  初始化数据流引用位置:==> if (php_init_stream_wrappers(module_number TSRMLS_CC) == FAILURE)     //    main.c 1765行,初始化,注册数据流 
添加默认注册的流程如下:==> zend_startup_modules(TSRMLS_C);    //    main.c 1843行,添加注册数据流==>zend_hash_apply(&module_registry, (apply_func_t)zend_startup_module_ex TSRMLS_CC);    //    zend_API.c    1519行==>ZEND_API int zend_startup_module_ex(zend_module_entry *module TSRMLS_DC)    //    zend_API.c 1424行    ==>if (module->module_startup_func) {    //    zend_API.c    1470行==>PHP_MINIT_FUNCTION(basic)    //    basic_functions.c     3973行==> php_register_url_stream_wrapper("php", &php_stream_php_wrapper TSRMLS_CC);
 php_register_url_stream_wrapper("file", &php_plain_files_wrapper TSRMLS_CC);
 php_register_url_stream_wrapper("data", &php_stream_rfc2397_wrapper TSRMLS_CC);#ifndef PHP_CURL_URL_WRAPPERS
 php_register_url_stream_wrapper("http", &php_stream_http_wrapper TSRMLS_CC);
 php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper TSRMLS_CC);#endif 
     //     basic_functions.c    4073行,添加过程==>php_register_url_stream_wrapper    //    main/streams/streams.c    1450行

Die Zeitspanne dieser Nachverfolgung betrug eine Woche, was als eine Menge Strapazen angesehen werden kann. Aber schließlich wurde die Quelle herausgefunden.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Eine kurze Diskussion über den fünften PHP-Quellcode: Über die Erstellung eines Array-Arrays

Eine kurze Diskussion Diskussion zum PHP-Quellcode vier: Über die Zählfunktion

Eine kurze Diskussion zum PHP-Quellcode drei: Über die Funktion strrchr, strstr, stristr

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion des PHP-Quellcodes 6: Über die Funktion stream_get_wrappers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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