stream_wrapper_register

PHP のクラスとして実装された URL ラッパーを登録する

説明

bool stream_wrapper_register(string $protocol, string $class, int $flags = 0)

自分で作ったプロトコルハンドラとストリームを実装し、それを fopenfread といったファイルシステムの関数と利用することを可能にします。

パラメータ

protocol

登録したいラッパー名。 有効なプロトコル名には、 アルファベットと数値、ドット(.)、 プラス文字(+)、 ハイフン(-) のみが含まれています。

class

protocol を実装したクラス名。

flags

protocol が URL プロトコルである場合は STREAM_IS_URL を設定しなければなりません。 デフォルトは 0 で、ローカルストリームを意味します。

戻り値

成功した場合に true を、失敗した場合に false を返します。

stream_wrapper_register は、 protocol というハンドラが既にある場合、 false を返します。

例1 ストリームラッパーの登録方法

<?php
$existed = in_array("var", stream_get_wrappers());
if ($existed) {
    stream_wrapper_unregister("var");
}
stream_wrapper_register("var", "VariableStream");
$myvar = "";

$fp = fopen("var://myvar", "r+");

fwrite($fp, "line1\n");
fwrite($fp, "line2\n");
fwrite($fp, "line3\n");

rewind($fp);
while (!feof($fp)) {
    echo fgets($fp);
}
fclose($fp);
var_dump($myvar);

if ($existed) {
    stream_wrapper_restore("var");
}

?>

上の例の出力は以下となります。

line1
line2
line3
string(18) "line1
line2
line3
"

参考