ホームページ  >  記事  >  バックエンド開発  >  PHP ソース コードの簡単な説明 6: stream_get_wrappers 関数について

PHP ソース コードの簡単な説明 6: stream_get_wrappers 関数について

不言
不言オリジナル
2018-06-28 16:47:311664ブラウズ

この記事では、主に PHP ソース コード 6 についての簡単な説明を紹介します。stream_get_wrappers 関数については、特定の参照値がありますので、必要な方は参照してください。

#stream_get_wrappers

(PHP 5)

stream_get_wrappers — 登録されたデータ ストリームのリストを返します

Description

array stream_get_wrappers (void)

次の内容を含むインデックス付き配列を返します実行中のシステムで利用可能なすべてのストリーム ラッパーの名前。

他の関数の実装プロセスでは、url_stream_wrappers_hash 変数

のソースを知る必要があるため、この関数も直接読み取ることがわかります。 url_stream_wrappers_hash 変数からのデータ、
これで、この関数と url_stream_wrappers_hash 変数の追跡プロセスが完了しました。
まず、この拡張機能の実装は、標準フォルダーの下の streamsfuncs.c ファイルに含まれています。
パスは次のとおりです。

   ==>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;    //    全局静态变量,

この関数のコードから、次のことがわかります。 php_stream_get_url_stream_wrappers_hash() を直接走査します。関数の戻り値は文字列配列を生成します。

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行

この追跡期間は 1 週間で、大変な苦労があったと言えます。しかし、ついにその情報源が判明した。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP ソース コード 5 についての簡単な説明: 配列 array の作成について

概要PHP ソース コード 4 についての説明: count 関数について

PHP ソース コード 3 についての簡単な説明: strrchr、strstr、stristr 関数について

以上がPHP ソース コードの簡単な説明 6: stream_get_wrappers 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。