Misc
Id
id() returns an integer id for the stream's underlying resource. See get_resource_id() for details.
$stream = FileStream::open('pets.txt', 'r');
echo $stream->id(); // 1330
Mode
The stream's mode can be determined via the mode() method.
$stream = FileStream::open('bills.txt', 'w+b');
echo $stream->mode(); // w+b
See stream_get_meta_data() for details.
Uri
The stream's filename or URI can be obtained using uri().
$stream = FileStream::open('https://example.com/books', 'r+b');
echo $stream->uri(); // https://example.com/books
See stream_get_meta_data() for details.
Type
Resource Type
To determine the type of the underlying resource, use the type() method.
$stream = FileStream::open('pets.txt', 'r');
echo $stream->type(); // stream
See get_resource_type() for more information.
Stream Type
To determine the stream type, use streamType().
$stream = FileStream::open('pets.txt', 'r');
echo $stream->streamType(); // STDIO
See stream_get_meta_data() for details.
Stream Wrapper Type
The stream's wrapper type can be determined via wrapperType().
$stream = FileStream::open('pets.txt', 'r');
echo $stream->wrapperType(); // plainfile
See stream_get_meta_data() for details.
Wrapper Data
wrapperData() can be used for obtaining stream wrapper's data.
$stream = FileStream::open('https://www.google.com', 'r');
echo $stream->wrapperData(); // ...not shown here...
See stream_get_meta_data() for details.
Blocking Mode
To set the stream's blocking mode, use setBlocking(). Furthermore, use blocked() to determine if the stream is blocked.
$stream = FileStream::open('houses.txt', 'r+b')
->setBlocking(true);
echo $stream->blocked(); // true
See PHP's stream blocking mode for additional information.
Timeout
The setTimeout() can be used to set the stream's timeout, whereas the timedOut() can be used to determine if a stream has timed out.
It accepts two arguments:
int $seconds: Seconds part of the timeout to be set.int $microseconds: (optional) microseconds part of the timeout to be set.
$stream = FileStream::open('houses.txt', 'r+b')
->setTimeout(1, 50);
echo $stream->timedOut(); // false
See stream_set_timeout() for more information.
Local or Remote
To determine if a stream is "local" or "remote", use the isLocal() and isRemote() methods.
$a = FileStream::open('https://www.google.com', 'r');
$b = FileStream::open('books.txt', 'r');
echo $a->isLocal(); // false
echo $b->isLocal(); // true
echo $a->isRemote(); // true
echo $b->isRemote(); // false
PHP's stream_is_local() is used to determine if a stream is local or remote.
Onward
For additional utility methods, please review the source code the provided stream components.