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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Utils.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 5.41 KiB


 001  <?php
 002  namespace GuzzleHttp\Stream;
 003   
 004  use GuzzleHttp\Stream\Exception\SeekException;
 005   
 006  /**
 007   * Static utility class because PHP's autoloaders don't support the concept
 008   * of namespaced function autoloading.
 009   */
 010  class Utils
 011  {
 012      /**
 013       * Safely opens a PHP stream resource using a filename.
 014       *
 015       * When fopen fails, PHP normally raises a warning. This function adds an
 016       * error handler that checks for errors and throws an exception instead.
 017       *
 018       * @param string $filename File to open
 019       * @param string $mode     Mode used to open the file
 020       *
 021       * @return resource
 022       * @throws \RuntimeException if the file cannot be opened
 023       */
 024      public static function open($filename, $mode)
 025      {
 026          $ex = null;
 027          set_error_handler(function () use ($filename, $mode, &$ex) {
 028              $ex = new \RuntimeException(sprintf(
 029                  'Unable to open %s using mode %s: %s',
 030                  $filename,
 031                  $mode,
 032                  func_get_args()[1]
 033              ));
 034          });
 035   
 036          $handle = fopen($filename, $mode);
 037          restore_error_handler();
 038   
 039          if ($ex) {
 040              /** @var $ex \RuntimeException */
 041              throw $ex;
 042          }
 043   
 044          return $handle;
 045      }
 046   
 047      /**
 048       * Copy the contents of a stream into a string until the given number of
 049       * bytes have been read.
 050       *
 051       * @param StreamInterface $stream Stream to read
 052       * @param int             $maxLen Maximum number of bytes to read. Pass -1
 053       *                                to read the entire stream.
 054       * @return string
 055       */
 056      public static function copyToString(StreamInterface $stream, $maxLen = -1)
 057      {
 058          $buffer = '';
 059   
 060          if ($maxLen === -1) {
 061              while (!$stream->eof()) {
 062                  $buf = $stream->read(1048576);
 063                  if ($buf === false) {
 064                      break;
 065                  }
 066                  $buffer .= $buf;
 067              }
 068              return $buffer;
 069          }
 070   
 071          $len = 0;
 072          while (!$stream->eof() && $len < $maxLen) {
 073              $buf = $stream->read($maxLen - $len);
 074              if ($buf === false) {
 075                  break;
 076              }
 077              $buffer .= $buf;
 078              $len = strlen($buffer);
 079          }
 080   
 081          return $buffer;
 082      }
 083   
 084      /**
 085       * Copy the contents of a stream into another stream until the given number
 086       * of bytes have been read.
 087       *
 088       * @param StreamInterface $source Stream to read from
 089       * @param StreamInterface $dest   Stream to write to
 090       * @param int             $maxLen Maximum number of bytes to read. Pass -1
 091       *                                to read the entire stream.
 092       */
 093      public static function copyToStream(
 094          StreamInterface $source,
 095          StreamInterface $dest,
 096          $maxLen = -1
 097      ) {
 098          if ($maxLen === -1) {
 099              while (!$source->eof()) {
 100                  if (!$dest->write($source->read(1048576))) {
 101                      break;
 102                  }
 103              }
 104              return;
 105          }
 106   
 107          $bytes = 0;
 108          while (!$source->eof()) {
 109              $buf = $source->read($maxLen - $bytes);
 110              if (!($len = strlen($buf))) {
 111                  break;
 112              }
 113              $bytes += $len;
 114              $dest->write($buf);
 115              if ($bytes == $maxLen) {
 116                  break;
 117              }
 118          }
 119      }
 120   
 121      /**
 122       * Calculate a hash of a Stream
 123       *
 124       * @param StreamInterface $stream    Stream to calculate the hash for
 125       * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
 126       * @param bool            $rawOutput Whether or not to use raw output
 127       *
 128       * @return string Returns the hash of the stream
 129       * @throws SeekException
 130       */
 131      public static function hash(
 132          StreamInterface $stream,
 133          $algo,
 134          $rawOutput = false
 135      ) {
 136          $pos = $stream->tell();
 137   
 138          if ($pos > 0 && !$stream->seek(0)) {
 139              throw new SeekException($stream);
 140          }
 141   
 142          $ctx = hash_init($algo);
 143          while (!$stream->eof()) {
 144              hash_update($ctx, $stream->read(1048576));
 145          }
 146   
 147          $out = hash_final($ctx, (bool) $rawOutput);
 148          $stream->seek($pos);
 149   
 150          return $out;
 151      }
 152   
 153      /**
 154       * Read a line from the stream up to the maximum allowed buffer length
 155       *
 156       * @param StreamInterface $stream    Stream to read from
 157       * @param int             $maxLength Maximum buffer length
 158       *
 159       * @return string|bool
 160       */
 161      public static function readline(StreamInterface $stream, $maxLength = null)
 162      {
 163          $buffer = '';
 164          $size = 0;
 165   
 166          while (!$stream->eof()) {
 167              if (false === ($byte = $stream->read(1))) {
 168                  return $buffer;
 169              }
 170              $buffer .= $byte;
 171              // Break when a new line is found or the max length - 1 is reached
 172              if ($byte == PHP_EOL || ++$size == $maxLength - 1) {
 173                  break;
 174              }
 175          }
 176   
 177          return $buffer;
 178      }
 179   
 180      /**
 181       * Alias of GuzzleHttp\Stream\Stream::factory.
 182       *
 183       * @param mixed $resource Resource to create
 184       * @param array $options  Associative array of stream options defined in
 185       *                        {@see \GuzzleHttp\Stream\Stream::__construct}
 186       *
 187       * @return StreamInterface
 188       *
 189       * @see GuzzleHttp\Stream\Stream::factory
 190       * @see GuzzleHttp\Stream\Stream::__construct
 191       */
 192      public static function create($resource, array $options = [])
 193      {
 194          return Stream::factory($resource, $options);
 195      }
 196  }
 197