source: vendor/guzzlehttp/psr7/src/LazyOpenStream.php

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
RevLine 
[e3d4e0a]1<?php
2
3declare(strict_types=1);
4
5namespace GuzzleHttp\Psr7;
6
7use 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 */
13final 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.