PHP 8.4.1 Released!

stream_wrapper_register

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

stream_wrapper_registerBir PHP sınıfı olarak gerçeklenmiş bir URL sarmalayıcısını etkin kılar

Açıklama

stream_wrapper_register(string $protokol, string $sınıf, int $seçenekler = 0): bool

Dosya sistemi işlevleri (fopen(), fread() vb. gibi) ile kullanmak için kendi akım ve sarmalayıcılarınızı gerçeklemenizi sağlar.

Bağımsız Değişkenler

protokol

Etkin olacak sarmalayıcının ismi. Geçerli protokol isimleri sadece abecesel karakterler, nokta (.), artı (+) veya eksi (-) imleri içerebilir.

sınıf

protokol'ü gerçekleyen sınıfın ismi.

seçenekler

protokol bir URL protokolü ise STREAM_IS_URL olmalıdır. Öntanımlı değer 0 olup, yerel akıma karşılıktır.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

protokol sarmalayıcısı zaten varsa false döner.

Örnekler

Örnek 1 - Bir akım sarmalayıcının etkin kılınması

<?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");
}

?>

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note

User Contributed Notes 2 notes

up
10
cellog at php dot net
19 years ago
If you plan to use your wrapper in a require_once you need to define stream_stat(). If you plan to allow any other tests like is_file()/is_dir(), you have to define url_stat().

stream_stat() must define the size of the file, or it will never be included. url_stat() must define mode, or is_file()/is_dir()/is_executable(), and any of those functions affected by clearstatcache() simply won't work.

It's not documented, but directories must be a mode like 040777 (octal), and files a mode like 0100666. If you wish the file to be executable, use 7s instead of 6s. The last 3 digits are exactly the same thing as what you pass to chmod. 040000 defines a directory, and 0100000 defines a file. It would be really helpful to add this to the official manual!
up
2
jhannus at php dot net
19 years ago
It is worth noting that if your wrapper supports stream_flush() then when you flcose() your stream this function will be called prior to closing the stream.
To Top