icewind / streams

一组通用的流包装器

v0.7.7 2023-03-16 14:52 UTC

README

Streams

CI codecov

PHP的通用流包装器。

CallBackWrapper

CallBackWrapper 可以用于在流的读取、写入和关闭时注册回调,它包装了一个现有的流,因此可以用于PHP中的任何流

回调函数将与源流一起传递到流上下文中,可以是任何有效的 PHP可调用函数

示例

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

注意:由于PHP内部流缓冲,传递给读取回调的 $count 将等于PHP内部缓冲区大小(默认为8192),而不是 fopen() 请求的字节数