mantis-matrix-integration – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 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 }