FnStream
in package
implements
StreamInterface
Compose stream implementations based on a hash of functions.
Allows for easy testing and extension of a provided stream without needing to create a concrete class for a simple extension point.
Attributes
- #[AllowDynamicProperties]
Table of Contents
Interfaces
- StreamInterface
- Describes a data stream.
Constants
- SLOTS = ['__toString', 'close', 'detach', 'rewind', 'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write', 'isReadable', 'read', 'getContents', 'getMetadata']
Properties
- $methods : array<string, callable>
Methods
- __construct() : mixed
- __destruct() : mixed
- The close method is called on the underlying stream only if possible.
- __get() : void
- Lazily determine which methods are not implemented.
- __toString() : string
- Reads all data from the stream into a string, from the beginning to end.
- __wakeup() : void
- An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
- close() : void
- Closes the stream and any underlying resources.
- decorate() : FnStream
- Adds custom functionality to an underlying stream by intercepting specific method calls.
- detach() : resource|null
- Separates any underlying resources from the stream.
- eof() : bool
- Returns true if the stream is at the end of the stream.
- getContents() : string
- Returns the remaining contents in a string
- getMetadata() : mixed
- Get stream metadata as an associative array or retrieve a specific key.
- getSize() : int|null
- Get the size of the stream if known.
- isReadable() : bool
- Returns whether or not the stream is readable.
- isSeekable() : bool
- Returns whether or not the stream is seekable.
- isWritable() : bool
- Returns whether or not the stream is writable.
- read() : string
- Read data from the stream.
- rewind() : void
- Seek to the beginning of the stream.
- seek() : void
- Seek to a position in the stream.
- tell() : int
- Returns the current position of the file read/write pointer
- write() : int
- Write data to the stream.
Constants
SLOTS
private
mixed
SLOTS
= ['__toString', 'close', 'detach', 'rewind', 'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write', 'isReadable', 'read', 'getContents', 'getMetadata']
Properties
$methods
private
array<string, callable>
$methods
Methods
__construct()
public
__construct(array<string, callable> $methods) : mixed
Parameters
- $methods : array<string, callable>
-
Hash of method name to a callable.
__destruct()
The close method is called on the underlying stream only if possible.
public
__destruct() : mixed
__get()
Lazily determine which methods are not implemented.
public
__get(string $name) : void
Parameters
- $name : string
Tags
__toString()
Reads all data from the stream into a string, from the beginning to end.
public
__toString() : string
This method MUST attempt to seek to the beginning of the stream before reading data and read the stream until the end is reached.
Warning: This could attempt to load a large amount of data into memory.
This method MUST NOT raise an exception in order to conform with PHP's string casting operations.
Return values
string__wakeup()
An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
public
__wakeup() : void
Tags
close()
Closes the stream and any underlying resources.
public
close() : void
decorate()
Adds custom functionality to an underlying stream by intercepting specific method calls.
public
static decorate(StreamInterface $stream, array<string, callable> $methods) : FnStream
Parameters
- $stream : StreamInterface
-
Stream to decorate
- $methods : array<string, callable>
-
Hash of method name to a closure
Return values
FnStreamdetach()
Separates any underlying resources from the stream.
public
detach() : resource|null
After the stream has been detached, the stream is in an unusable state.
Return values
resource|null —Underlying PHP stream, if any
eof()
Returns true if the stream is at the end of the stream.
public
eof() : bool
Return values
boolgetContents()
Returns the remaining contents in a string
public
getContents() : string
Return values
stringgetMetadata()
Get stream metadata as an associative array or retrieve a specific key.
public
getMetadata([mixed $key = null ]) : mixed
Parameters
- $key : mixed = null
-
Specific metadata to retrieve.
getSize()
Get the size of the stream if known.
public
getSize() : int|null
Return values
int|null —Returns the size in bytes if known, or null if unknown.
isReadable()
Returns whether or not the stream is readable.
public
isReadable() : bool
Return values
boolisSeekable()
Returns whether or not the stream is seekable.
public
isSeekable() : bool
Return values
boolisWritable()
Returns whether or not the stream is writable.
public
isWritable() : bool
Return values
boolread()
Read data from the stream.
public
read(mixed $length) : string
Parameters
- $length : mixed
-
Read up to $length bytes from the object and return them. Fewer than $length bytes may be returned if underlying stream call returns fewer bytes.
Return values
string —Returns the data read from the stream, or an empty string if no bytes are available.
rewind()
Seek to the beginning of the stream.
public
rewind() : void
If the stream is not seekable, this method will raise an exception; otherwise, it will perform a seek(0).
seek()
Seek to a position in the stream.
public
seek(mixed $offset[, mixed $whence = SEEK_SET ]) : void
Parameters
- $offset : mixed
-
Stream offset
- $whence : mixed = SEEK_SET
-
Specifies how the cursor position will be calculated based on the seek offset. Valid values are identical to the built-in PHP $whence values for
fseek()
. SEEK_SET: Set position equal to offset bytes SEEK_CUR: Set position to current location plus offset SEEK_END: Set position to end-of-stream plus offset.
tell()
Returns the current position of the file read/write pointer
public
tell() : int
Return values
int —Position of the file pointer
write()
Write data to the stream.
public
write(mixed $string) : int
Parameters
- $string : mixed
-
The string that is to be written.
Return values
int —Returns the number of bytes written to the stream.