PluginProbe ʕ •ᴥ•ʔ
Check & Log Email – Easy Email Testing & Mail logging / 2.0.15
Check & Log Email – Easy Email Testing & Mail logging v2.0.15
2.0.15 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 2.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.13.1 2.0.13.2 2.0.14 2.0.2 2.0.3 2.0.4 2.0.5 2.0.5.1 2.0.6 2.0.7 2.0.8 2.0.9 trunk 0.5.7 0.6.0 0.6.1 0.6.2 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.12.1 1.0.13 1.0.13.1 1.0.2 1.0.3
check-email / vendor / guzzlehttp / psr7 / src / StreamDecoratorTrait.php
check-email / vendor / guzzlehttp / psr7 / src Last commit date
Exception 1 week ago AppendStream.php 1 week ago BufferStream.php 1 week ago CachingStream.php 1 week ago DroppingStream.php 1 week ago FnStream.php 1 week ago Header.php 1 week ago HttpFactory.php 1 week ago InflateStream.php 1 week ago LazyOpenStream.php 1 week ago LimitStream.php 1 week ago Message.php 1 week ago MessageTrait.php 1 week ago MimeType.php 1 week ago MultipartStream.php 1 week ago NoSeekStream.php 1 week ago PumpStream.php 1 week ago Query.php 1 week ago Request.php 1 week ago Response.php 1 week ago Rfc7230.php 1 week ago ServerRequest.php 1 week ago Stream.php 1 week ago StreamDecoratorTrait.php 1 week ago StreamWrapper.php 1 week ago UploadedFile.php 1 week ago Uri.php 1 week ago UriComparator.php 1 week ago UriNormalizer.php 1 week ago UriResolver.php 1 week ago Utils.php 1 week ago
StreamDecoratorTrait.php
157 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace GuzzleHttp\Psr7;
6
7 use Psr\Http\Message\StreamInterface;
8
9 /**
10 * Stream decorator trait
11 *
12 * @property StreamInterface $stream
13 */
14 trait StreamDecoratorTrait
15 {
16 /**
17 * @param StreamInterface $stream Stream to decorate
18 */
19 public function __construct(StreamInterface $stream)
20 {
21 $this->stream = $stream;
22 }
23
24 /**
25 * Magic method used to create a new stream if streams are not added in
26 * the constructor of a decorator (e.g., LazyOpenStream).
27 *
28 * @return StreamInterface
29 */
30 public function __get(string $name)
31 {
32 if ($name === 'stream') {
33 $this->stream = $this->createStream();
34
35 return $this->stream;
36 }
37
38 throw new \UnexpectedValueException("$name not found on class");
39 }
40
41 public function __toString(): string
42 {
43 try {
44 if ($this->isSeekable()) {
45 $this->seek(0);
46 }
47
48 return $this->getContents();
49 } catch (\Throwable $e) {
50 if (\PHP_VERSION_ID >= 70400) {
51 throw $e;
52 }
53 trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
54
55 return '';
56 }
57 }
58
59 public function getContents(): string
60 {
61 return Utils::copyToString($this);
62 }
63
64 /**
65 * Allow decorators to implement custom methods
66 *
67 * @return mixed
68 */
69 public function __call(string $method, array $args)
70 {
71 /** @var callable $callable */
72 $callable = [$this->stream, $method];
73 $result = ($callable)(...$args);
74
75 // Always return the wrapped object if the result is a return $this
76 return $result === $this->stream ? $this : $result;
77 }
78
79 public function close(): void
80 {
81 $this->stream->close();
82 }
83
84 /**
85 * @return mixed
86 */
87 public function getMetadata($key = null)
88 {
89 return $this->stream->getMetadata($key);
90 }
91
92 public function detach()
93 {
94 return $this->stream->detach();
95 }
96
97 public function getSize(): ?int
98 {
99 return $this->stream->getSize();
100 }
101
102 public function eof(): bool
103 {
104 return $this->stream->eof();
105 }
106
107 public function tell(): int
108 {
109 return $this->stream->tell();
110 }
111
112 public function isReadable(): bool
113 {
114 return $this->stream->isReadable();
115 }
116
117 public function isWritable(): bool
118 {
119 return $this->stream->isWritable();
120 }
121
122 public function isSeekable(): bool
123 {
124 return $this->stream->isSeekable();
125 }
126
127 public function rewind(): void
128 {
129 $this->seek(0);
130 }
131
132 public function seek($offset, $whence = SEEK_SET): void
133 {
134 $this->stream->seek($offset, $whence);
135 }
136
137 public function read($length): string
138 {
139 return $this->stream->read($length);
140 }
141
142 public function write($string): int
143 {
144 return $this->stream->write($string);
145 }
146
147 /**
148 * Implement in subclasses to dynamically create streams when requested.
149 *
150 * @throws \BadMethodCallException
151 */
152 protected function createStream(): StreamInterface
153 {
154 throw new \BadMethodCallException('Not implemented');
155 }
156 }
157