Côme Chilliet 1a12f14a19 Update icewind/streams to 0.7.7, and remove it from explicit deps in files_external 1 gadu atpakaļ
..
src 1a12f14a19 Update icewind/streams to 0.7.7, and remove it from explicit deps in files_external 1 gadu atpakaļ
.gitignore 66781e74ad update icewind/smb to 3.4.0 3 gadi atpakaļ
LICENCE dfbd85d723 update icewind/streams to 0.4.0 and icewind/smb to 1.0.7 in files_external 8 gadi atpakaļ
README.md 66781e74ad update icewind/smb to 3.4.0 3 gadi atpakaļ
composer.json 66781e74ad update icewind/smb to 3.4.0 3 gadi atpakaļ

README.md

Streams

CI codecov

Generic stream wrappers for php.

CallBackWrapper

A CallBackWrapper can be used to register callbacks on read, write and closing of the stream, it wraps an existing stream and can thus be used for any stream in php

The callbacks are passed in the stream context along with the source stream and can be any valid php callable

Example

<?php

use \Icewind\Streams\CallBackWrapper;

require('vendor/autoload.php');

// get an existing stream to wrap
$source = fopen('php://temp', 'r+');

// register the callbacks
$stream = CallbackWrapper::wrap($source,
	// read callback
	function ($count) {
		echo "read " . $count . "bytes\n";
	},
	// write callback
	function ($data) {
		echo "wrote '" . $data . "'\n";
	},
	// close callback
	function () {
		echo "stream closed\n";
	});

fwrite($stream, 'some dummy data');

rewind($stream);
fread($stream, 5);

fclose($stream);

Note: due to php's internal stream buffering the $count passed to the read callback will be equal to php's internal buffer size (8192 on default) an not the number of bytes requested by fopen()