PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / modules / GuzzleHttp / Psr7 / LazyOpenStream.php

LazyOpenStream.php in Depicter — Popup & Slider Builder trunk, at modules/GuzzleHttp/Psr7/LazyOpenStream.php

50 lines 1.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Depicter\GuzzleHttp\Psr7;
6
7 use Depicter\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 }
50