ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
StreamDecoratorTrait.php
Go to the documentation of this file.
1<?php
2namespace GuzzleHttp\Psr7;
3
5
10trait StreamDecoratorTrait
11{
15 public function __construct(StreamInterface $stream)
16 {
17 $this->stream = $stream;
18 }
19
28 public function __get($name)
29 {
30 if ($name == 'stream') {
31 $this->stream = $this->createStream();
32 return $this->stream;
33 }
34
35 throw new \UnexpectedValueException("$name not found on class");
36 }
37
38 public function __toString()
39 {
40 try {
41 if ($this->isSeekable()) {
42 $this->seek(0);
43 }
44 return $this->getContents();
45 } catch (\Exception $e) {
46 // Really, PHP? https://bugs.php.net/bug.php?id=53648
47 trigger_error('StreamDecorator::__toString exception: '
48 . (string) $e, E_USER_ERROR);
49 return '';
50 }
51 }
52
53 public function getContents()
54 {
55 return copy_to_string($this);
56 }
57
66 public function __call($method, array $args)
67 {
68 $result = call_user_func_array([$this->stream, $method], $args);
69
70 // Always return the wrapped object if the result is a return $this
71 return $result === $this->stream ? $this : $result;
72 }
73
74 public function close()
75 {
76 $this->stream->close();
77 }
78
79 public function getMetadata($key = null)
80 {
81 return $this->stream->getMetadata($key);
82 }
83
84 public function detach()
85 {
86 return $this->stream->detach();
87 }
88
89 public function getSize()
90 {
91 return $this->stream->getSize();
92 }
93
94 public function eof()
95 {
96 return $this->stream->eof();
97 }
98
99 public function tell()
100 {
101 return $this->stream->tell();
102 }
103
104 public function isReadable()
105 {
106 return $this->stream->isReadable();
107 }
108
109 public function isWritable()
110 {
111 return $this->stream->isWritable();
112 }
113
114 public function isSeekable()
115 {
116 return $this->stream->isSeekable();
117 }
118
119 public function rewind()
120 {
121 $this->seek(0);
122 }
123
124 public function seek($offset, $whence = SEEK_SET)
125 {
126 $this->stream->seek($offset, $whence);
127 }
128
129 public function read($length)
130 {
131 return $this->stream->read($length);
132 }
133
134 public function write($string)
135 {
136 return $this->stream->write($string);
137 }
138
145 protected function createStream()
146 {
147 throw new \BadMethodCallException('Not implemented');
148 }
149}
$result
An exception for terminatinating execution or to throw for unit testing.
$key
Definition: croninfo.php:18
Describes a data stream.
if($format !==null) $name
Definition: metadata.php:146
$stream
PHP stream implementation.
copy_to_string(StreamInterface $stream, $maxLen=-1)
Copy the contents of a stream into a string until the given number of bytes have been read.
Definition: functions.php:328
__call($method, array $arguments)
Plugins pass-through.