Add Wrapper::wrap() convenience method

also fix some test class names
This commit is contained in:
Robin Appelman 2014-07-24 01:07:35 +02:00
commit a19beaf7ef
5 changed files with 77 additions and 50 deletions

View file

@ -38,6 +38,30 @@ class CallBackWrapper extends Wrapper {
*/
protected $closeCallback;
/**
* Wraps a stream with the provided callbacks
*
* @param resource $source
* @param callable $read (optional)
* @param callable $write (optional)
* @param callable $close (optional)
* @return resource
*/
public static function wrap($source, $read = null, $write = null, $close = null) {
stream_wrapper_register('callback', '\Icewind\Streams\CallbackWrapper');
$context = stream_context_create(array(
'callback' => array(
'source' => $source,
'read' => $read,
'write' => $write,
'close' => $close
)
));
$wrapped = fopen('callback://', 'r+', false, $context);
stream_wrapper_unregister('callback');
return $wrapped;
}
public function stream_open() {
$context = $this->loadContext('callback');