Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
GuzzleStreamWrapper.php
001 <?php
002 namespace GuzzleHttp\Stream;
003
004 /**
005 * Converts Guzzle streams into PHP stream resources.
006 */
007 class GuzzleStreamWrapper
008 {
009 /** @var resource */
010 public $context;
011
012 /** @var StreamInterface */
013 private $stream;
014
015 /** @var string r, r+, or w */
016 private $mode;
017
018 /**
019 * Returns a resource representing the stream.
020 *
021 * @param StreamInterface $stream The stream to get a resource for
022 *
023 * @return resource
024 * @throws \InvalidArgumentException if stream is not readable or writable
025 */
026 public static function getResource(StreamInterface $stream)
027 {
028 self::register();
029
030 if ($stream->isReadable()) {
031 $mode = $stream->isWritable() ? 'r+' : 'r';
032 } elseif ($stream->isWritable()) {
033 $mode = 'w';
034 } else {
035 throw new \InvalidArgumentException('The stream must be readable, '
036 . 'writable, or both.');
037 }
038
039 return fopen('guzzle://stream', $mode, null, stream_context_create([
040 'guzzle' => ['stream' => $stream]
041 ]));
042 }
043
044 /**
045 * Registers the stream wrapper if needed
046 */
047 public static function register()
048 {
049 if (!in_array('guzzle', stream_get_wrappers())) {
050 stream_wrapper_register('guzzle', __CLASS__);
051 }
052 }
053
054 public function stream_open($path, $mode, $options, &$opened_path)
055 {
056 $options = stream_context_get_options($this->context);
057
058 if (!isset($options['guzzle']['stream'])) {
059 return false;
060 }
061
062 $this->mode = $mode;
063 $this->stream = $options['guzzle']['stream'];
064
065 return true;
066 }
067
068 public function stream_read($count)
069 {
070 return $this->stream->read($count);
071 }
072
073 public function stream_write($data)
074 {
075 return (int) $this->stream->write($data);
076 }
077
078 public function stream_tell()
079 {
080 return $this->stream->tell();
081 }
082
083 public function stream_eof()
084 {
085 return $this->stream->eof();
086 }
087
088 public function stream_seek($offset, $whence)
089 {
090 return $this->stream->seek($offset, $whence);
091 }
092
093 public function stream_stat()
094 {
095 static $modeMap = [
096 'r' => 33060,
097 'r+' => 33206,
098 'w' => 33188
099 ];
100
101 return [
102 'dev' => 0,
103 'ino' => 0,
104 'mode' => $modeMap[$this->mode],
105 'nlink' => 0,
106 'uid' => 0,
107 'gid' => 0,
108 'rdev' => 0,
109 'size' => $this->stream->getSize() ?: 0,
110 'atime' => 0,
111 'mtime' => 0,
112 'ctime' => 0,
113 'blksize' => 0,
114 'blocks' => 0
115 ];
116 }
117 }
118