Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
namespace GuzzleHttp\Psr7;
3
 
4
use Psr\Http\Message\StreamInterface;
5
 
6
/**
7
 * Lazily reads or writes to a file that is opened only after an IO operation
8
 * take place on the stream.
9
 */
10
class LazyOpenStream implements StreamInterface
11
{
12
    use StreamDecoratorTrait;
13
 
14
    /** @var string File to open */
15
    private $filename;
16
 
17
    /** @var string $mode */
18
    private $mode;
19
 
20
    /**
21
     * @param string $filename File to lazily open
22
     * @param string $mode     fopen mode to use when opening the stream
23
     */
24
    public function __construct($filename, $mode)
25
    {
26
        $this->filename = $filename;
27
        $this->mode = $mode;
28
    }
29
 
30
    /**
31
     * Creates the underlying stream lazily when required.
32
     *
33
     * @return StreamInterface
34
     */
35
    protected function createStream()
36
    {
37
        return stream_for(try_fopen($this->filename, $this->mode));
38
    }
39
}