Потоки — способ обобщения операций с файлами, сетевого обмена, сжатия данных
и других операций, которые делят между собой общий набор функций и применений. В простейшем
определении поток (stream
) — объект ресурса
(resource), который ведёт себя как источник
непрерывной последовательности данных. Поэтому из потока можно
последовательно читать или записывать данные
и искать произвольные места внутри потока функцией fseek().
Обёртка (wrapper
) — дополнительный код, который
сообщает потоку, как обрабатывать конкретные протоколы или кодировки.
Например, обёртка http
знает, как
переводить URL-адрес в запрос по протоколу HTTP/1.0
файла
с удалённого сервера. В PHP по умолчанию встроили набор обёрток,
которые перечисляет раздел «Протоколы и обёртки»,
а дополнительные пользовательские обёртки можно добавит либо в PHP-скрипт через вызов
функции stream_wrapper_register(), либо непосредственно из модуля.
В PHP разрешается добавлять произвольные виды обёрток, поэтому ограничений на операции с обёртками нет.
Доступ к текущему списку обёрток, которые уже зарегистрировали, даёт функция stream_get_wrappers().
Ссылку на поток записывают вот так:
scheme
://target
scheme
(строка) — указывает название обёртки.
Примеры включают: file, http, https, ftp, ftps, compress.zlib, compress.bz2
и php. Список встроенных в PHP обёрток приводит раздел
«Протоколы и обёртки».
Функции устанавливают соединение через обёртку по умолчанию, часто это обёртка
file
://, если обёртку не указали.
target
— зависит от обёртки.
Для потоков файловой системы в большей части случаев указывают путь и имя файла.
Для сетевых потоков чаще указывают имя хоста, и часто с добавлением пути.
Описание целей для встроенных обёрток снова приводит раздел «Протоколы и обёртки».