mirror of
https://codeberg.org/icewind/streams.git
synced 2026-06-03 16:44:07 +02:00
Add interfaces for File and Directory wrappers
This commit is contained in:
parent
37ebfdf0b1
commit
b876cef7f2
5 changed files with 124 additions and 3 deletions
|
|
@ -62,7 +62,7 @@ class CallbackWrapper extends Wrapper {
|
||||||
return $wrapped;
|
return $wrapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function stream_open() {
|
public function stream_open($path, $mode, $options, &$opened_path) {
|
||||||
$context = $this->loadContext('callback');
|
$context = $this->loadContext('callback');
|
||||||
|
|
||||||
if (isset($context['read']) and is_callable($context['read'])) {
|
if (isset($context['read']) and is_callable($context['read'])) {
|
||||||
|
|
|
||||||
35
src/Directory.php
Normal file
35
src/Directory.php
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
|
||||||
|
* This file is licensed under the Licensed under the MIT license:
|
||||||
|
* http://opensource.org/licenses/MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Icewind\Streams;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for stream wrappers that implements a directory
|
||||||
|
*/
|
||||||
|
interface Directory {
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
* @param array $options
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function dir_opendir($path, $options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function dir_readdir();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function dir_closedir();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function dir_rewinddir();
|
||||||
|
}
|
||||||
86
src/File.php
Normal file
86
src/File.php
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
|
||||||
|
* This file is licensed under the Licensed under the MIT license:
|
||||||
|
* http://opensource.org/licenses/MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Icewind\Streams;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for stream wrappers that implements a file
|
||||||
|
*/
|
||||||
|
interface File {
|
||||||
|
/**
|
||||||
|
* @param string $path
|
||||||
|
* @param string $mode
|
||||||
|
* @param int $options
|
||||||
|
* @param string &$opened_path
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_open($path, $mode, $options, &$opened_path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $offset
|
||||||
|
* @param int $whence
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_seek($offset, $whence = SEEK_SET);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function stream_tell();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $count
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function stream_read($count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $data
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function stream_write($data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $option
|
||||||
|
* @param int $arg1
|
||||||
|
* @param int $arg2
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_set_option($option, $arg1, $arg2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $size
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_truncate($size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function stream_stat();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $operation
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_lock($operation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_flush();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_eof();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function stream_close();
|
||||||
|
}
|
||||||
|
|
@ -28,7 +28,7 @@ class NullWrapper extends Wrapper {
|
||||||
return $wrapped;
|
return $wrapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function stream_open() {
|
public function stream_open($path, $mode, $options, &$opened_path) {
|
||||||
$this->loadContext('null');
|
$this->loadContext('null');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ namespace Icewind\Streams;
|
||||||
*
|
*
|
||||||
* This wrapper itself doesn't implement any functionality but is just a base class for other wrappers to extend
|
* This wrapper itself doesn't implement any functionality but is just a base class for other wrappers to extend
|
||||||
*/
|
*/
|
||||||
abstract class Wrapper {
|
abstract class Wrapper implements File {
|
||||||
/**
|
/**
|
||||||
* The wrapped stream
|
* The wrapped stream
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue