Last change
on this file was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago |
Upload project files
|
-
Property mode
set to
100644
|
File size:
1.1 KB
|
Line | |
---|
1 | <?php
|
---|
2 |
|
---|
3 | declare(strict_types=1);
|
---|
4 |
|
---|
5 | namespace GuzzleHttp\Psr7;
|
---|
6 |
|
---|
7 | use Psr\Http\Message\StreamInterface;
|
---|
8 |
|
---|
9 | /**
|
---|
10 | * Lazily reads or writes to a file that is opened only after an IO operation
|
---|
11 | * take place on the stream.
|
---|
12 | */
|
---|
13 | final class LazyOpenStream implements StreamInterface
|
---|
14 | {
|
---|
15 | use StreamDecoratorTrait;
|
---|
16 |
|
---|
17 | /** @var string */
|
---|
18 | private $filename;
|
---|
19 |
|
---|
20 | /** @var string */
|
---|
21 | private $mode;
|
---|
22 |
|
---|
23 | /**
|
---|
24 | * @var StreamInterface
|
---|
25 | */
|
---|
26 | private $stream;
|
---|
27 |
|
---|
28 | /**
|
---|
29 | * @param string $filename File to lazily open
|
---|
30 | * @param string $mode fopen mode to use when opening the stream
|
---|
31 | */
|
---|
32 | public function __construct(string $filename, string $mode)
|
---|
33 | {
|
---|
34 | $this->filename = $filename;
|
---|
35 | $this->mode = $mode;
|
---|
36 |
|
---|
37 | // unsetting the property forces the first access to go through
|
---|
38 | // __get().
|
---|
39 | unset($this->stream);
|
---|
40 | }
|
---|
41 |
|
---|
42 | /**
|
---|
43 | * Creates the underlying stream lazily when required.
|
---|
44 | */
|
---|
45 | protected function createStream(): StreamInterface
|
---|
46 | {
|
---|
47 | return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode));
|
---|
48 | }
|
---|
49 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.