ストリームは、
ファイル、ネットワーク、データ圧縮などに関する、
共通した一連の関数群と利用法を持つ操作の一般化の手法です。
もっとも単純な定義では、ストリーム
というのは、ストリーミング可能な動作を体現する resource
オブジェクトといえます。つまり、ストリームには線的に読み出したり、
あるいは書き込んだりすることが可能で、かつ、
ストリーム上の任意の場所に fseek() できる場合もあります。
ラッパー
というのは、ストリームにおいてどのように特定の
プロトコル/エンコーディングを扱うかを扱うかを指示する付加的なコード
です。たとえば、http
ラッパーは、どのようにして
URL を、リモートサーバーのファイルに対する HTTP/1.0
リクエストに転換するかを知っています。PHP
には、デフォルトで組み込まれているラッパーが多数存在しますが
(サポートするプロトコル/ラッパー を参照ください)、
それに加え、カスタムラッパーをstream_wrapper_register()
を利用して PHP スクリプトの内部から、あるいはストリーム API を用いて、
直接拡張モジュールの内部から追加できます。
あらゆる種類のラッパーが PHP に追加できるので、
特にラッパーでできることの限界はありません。
現在登録されているラッパーの種類を知るには、
stream_get_wrappers() を使います。
リソースは次のような形でストリームとして参照されます: scheme
://target
scheme
(string) -
使用されるラッパーの名称です。例として、
file
, http
, https
,
ftp
, ftps
,
compress.zlib
, compress.bz2
,
php
などが含まれます。
PHP 組み込みのラッパーについては、サポートするプロトコル/ラッパー
を参照ください。もしラッパーが指定されていない場合は、使用している関数の
デフォルトが利用されます(通常は file
://)。
target
-
使用するラッパーによって解釈が異なります。
ファイルシステムに関連したストリームの場合、
一般的にこのパラメータは対象となるファイルの
ファイル名とパスを表します。
ネットワークに関連したストリームの場合、一般的に
このパラメータはホスト名と、(多くの場合付加されるはずの) パス名です。
PHP 組み込みのラッパーに、どのようにターゲットが解釈されるかは、
サポートするプロトコル/ラッパー を参照ください。