Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
    /**
1441 ariadna 24
     * @var StreamInterface
25
     */
26
    private $stream;
27
 
28
    /**
1 efrain 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;
1441 ariadna 36
 
37
        // unsetting the property forces the first access to go through
38
        // __get().
39
        unset($this->stream);
1 efrain 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
}