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!stream_wrapper_register
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
stream_wrapper_register
Референца за `function.stream-wrapper-register.php` со подобрена типографија и навигација.
stream_wrapper_register
(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
stream_wrapper_register — Регистрирај обвивка за URL имплементирана како PHP класа
= NULL
Ви овозможува да имплементирате сопствени рачки за протоколи и потоци за употреба со сите други функции на датотечниот систем (како што се fopen(), fread() итн.).
Параметри
protocol-
Име на обвивката што треба да се регистрира. Валидните имиња на протоколи мора да содржат само алфанумерички знаци, точки (.), плус (+) или цртички (-).
class-
Класата што ја имплементира
protocol. flags-
Треба да се постави на
STREAM_IS_URLifprotocolе протокол за URL. Стандардно е 0, локален стрим.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
stream_wrapper_register() ќе врати false ако
protocol веќе има ракувач.
Примери
Пример #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");
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
line1 line2 line3 string(18) "line1 line2 line3 "
Види Исто така
- На streamWrapper прототип класа
- Класи на потоци
- stream_wrapper_unregister() - Одјави URL обвивка
- stream_wrapper_restore() - Враќа претходно одјавена вградена обвивка
- stream_get_wrappers() - Преземи список на регистрирани стримови
Белешки од корисници 2 забелешки
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.