Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 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
    /**
991 lars 24
     * @var StreamInterface
25
     */
26
    private $stream;
27
 
28
    /**
148 lars 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;
991 lars 36
 
37
        // unsetting the property forces the first access to go through
38
        // __get().
39
        unset($this->stream);
148 lars 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
}