[ Index ]

PHP Cross Reference of phpBB-3.3.2-deutsch

title

Body

[close]

/vendor/guzzlehttp/psr7/src/ -> StreamWrapper.php (source)

   1  <?php
   2  
   3  namespace GuzzleHttp\Psr7;
   4  
   5  use Psr\Http\Message\StreamInterface;
   6  
   7  /**
   8   * Converts Guzzle streams into PHP stream resources.
   9   */
  10  class StreamWrapper
  11  {
  12      /** @var resource */
  13      public $context;
  14  
  15      /** @var StreamInterface */
  16      private $stream;
  17  
  18      /** @var string r, r+, or w */
  19      private $mode;
  20  
  21      /**
  22       * Returns a resource representing the stream.
  23       *
  24       * @param StreamInterface $stream The stream to get a resource for
  25       *
  26       * @return resource
  27       *
  28       * @throws \InvalidArgumentException if stream is not readable or writable
  29       */
  30      public static function getResource(StreamInterface $stream)
  31      {
  32          self::register();
  33  
  34          if ($stream->isReadable()) {
  35              $mode = $stream->isWritable() ? 'r+' : 'r';
  36          } elseif ($stream->isWritable()) {
  37              $mode = 'w';
  38          } else {
  39              throw new \InvalidArgumentException('The stream must be readable, '
  40                  . 'writable, or both.');
  41          }
  42  
  43          return fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
  44      }
  45  
  46      /**
  47       * Creates a stream context that can be used to open a stream as a php stream resource.
  48       *
  49       * @param StreamInterface $stream
  50       *
  51       * @return resource
  52       */
  53      public static function createStreamContext(StreamInterface $stream)
  54      {
  55          return stream_context_create([
  56              'guzzle' => ['stream' => $stream]
  57          ]);
  58      }
  59  
  60      /**
  61       * Registers the stream wrapper if needed
  62       */
  63      public static function register()
  64      {
  65          if (!in_array('guzzle', stream_get_wrappers())) {
  66              stream_wrapper_register('guzzle', __CLASS__);
  67          }
  68      }
  69  
  70      public function stream_open($path, $mode, $options, &$opened_path)
  71      {
  72          $options = stream_context_get_options($this->context);
  73  
  74          if (!isset($options['guzzle']['stream'])) {
  75              return false;
  76          }
  77  
  78          $this->mode = $mode;
  79          $this->stream = $options['guzzle']['stream'];
  80  
  81          return true;
  82      }
  83  
  84      public function stream_read($count)
  85      {
  86          return $this->stream->read($count);
  87      }
  88  
  89      public function stream_write($data)
  90      {
  91          return (int) $this->stream->write($data);
  92      }
  93  
  94      public function stream_tell()
  95      {
  96          return $this->stream->tell();
  97      }
  98  
  99      public function stream_eof()
 100      {
 101          return $this->stream->eof();
 102      }
 103  
 104      public function stream_seek($offset, $whence)
 105      {
 106          $this->stream->seek($offset, $whence);
 107  
 108          return true;
 109      }
 110  
 111      public function stream_cast($cast_as)
 112      {
 113          $stream = clone($this->stream);
 114  
 115          return $stream->detach();
 116      }
 117  
 118      public function stream_stat()
 119      {
 120          static $modeMap = [
 121              'r'  => 33060,
 122              'rb' => 33060,
 123              'r+' => 33206,
 124              'w'  => 33188,
 125              'wb' => 33188
 126          ];
 127  
 128          return [
 129              'dev'     => 0,
 130              'ino'     => 0,
 131              'mode'    => $modeMap[$this->mode],
 132              'nlink'   => 0,
 133              'uid'     => 0,
 134              'gid'     => 0,
 135              'rdev'    => 0,
 136              'size'    => $this->stream->getSize() ?: 0,
 137              'atime'   => 0,
 138              'mtime'   => 0,
 139              'ctime'   => 0,
 140              'blksize' => 0,
 141              'blocks'  => 0
 142          ];
 143      }
 144  
 145      public function url_stat($path, $flags)
 146      {
 147          return [
 148              'dev'     => 0,
 149              'ino'     => 0,
 150              'mode'    => 0,
 151              'nlink'   => 0,
 152              'uid'     => 0,
 153              'gid'     => 0,
 154              'rdev'    => 0,
 155              'size'    => 0,
 156              'atime'   => 0,
 157              'mtime'   => 0,
 158              'ctime'   => 0,
 159              'blksize' => 0,
 160              'blocks'  => 0
 161          ];
 162      }
 163  }


Generated: Wed Nov 11 20:28:18 2020 Cross-referenced by PHPXref 0.7.1