stream_wrapper_register
(PHP 4 >= 4.3.2, PHP 5, PHP 7)
stream_wrapper_register — Регистрирует обёртку URL, реализованную в виде PHP-класса
Описание
$protocol
, string $classname
[, int $flags
= 0
] )Позволяет вам реализовать ваши собственные обработчики протоколов и потоков для использования со всеми другими функциями файловой системы (такими, как fopen(), fread() и т. д.).
Список параметров
-
protocol
-
Название регистрируемой обёртки.
-
classname
-
Название класса, который реализует протокол
protocol
. -
flags
-
Должно быть установлено в
STREAM_IS_URL
, если параметрprotocol
является протоколом URL. По умолчанию 0, локальный поток.
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
stream_wrapper_register() будет возвращать FALSE
, если
протокол protocol
уже имеет обработчик.
Список изменений
Версия | Описание |
---|---|
5.2.4 |
Добавлен параметр flags .
|
Примеры
Пример #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 "
Смотрите также
- Класс-прототип streamWrapper
- Пример класса, зарегистрированного в качестве обертки потока
- stream_wrapper_unregister() - Отменяет регистрацию обертки URL
- stream_wrapper_restore() - Восстанавливает ранее разрегистрированную встроенную обёртку
- stream_get_wrappers() - Извлекает список зарегистрированных потоков
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- Потоки
- set_socket_blocking
- stream_bucket_append
- stream_bucket_make_writeable
- stream_bucket_new
- stream_bucket_prepend
- stream_context_create
- stream_context_get_default
- stream_context_get_options
- stream_context_get_params
- stream_context_set_default
- stream_context_set_option
- stream_context_set_params
- stream_copy_to_stream
- stream_encoding
- stream_filter_append
- stream_filter_prepend
- stream_filter_register
- stream_filter_remove
- stream_get_contents
- stream_get_filters
- stream_get_line
- stream_get_meta_data
- stream_get_transports
- stream_get_wrappers
- stream_is_local
- stream_notification_callback
- stream_register_wrapper
- stream_resolve_include_path
- stream_select
- stream_set_blocking
- stream_set_chunk_size
- stream_set_read_buffer
- stream_set_timeout
- stream_set_write_buffer
- stream_socket_accept
- stream_socket_client
- stream_socket_enable_crypto
- stream_socket_get_name
- stream_socket_pair
- stream_socket_recvfrom
- stream_socket_sendto
- stream_socket_server
- stream_socket_shutdown
- stream_supports_lock
- stream_wrapper_register
- stream_wrapper_restore
- stream_wrapper_unregister
Коментарии
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!
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.