Heim >Backend-Entwicklung >PHP-Tutorial >Eine kurze Diskussion des PHP-Quellcodes 6: Über die Funktion stream_get_wrappers
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()
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!