Exemple #1
0
 /**
  * Rad\Network\Http\Message\Stream constructor
  *
  * @param string|resource $stream
  * @param string          $mode
  * @param bool            $useIncludePath
  * @param null|resource   $context
  *
  * @throws BaseException
  */
 public function __construct($stream, $mode = 'r+', $useIncludePath = false, $context = null)
 {
     if (is_string($stream)) {
         set_error_handler([$this, 'connectionErrorHandler']);
         if ($context === null) {
             $this->handle = fopen($stream, $mode, $useIncludePath);
         } else {
             $this->handle = fopen($stream, $mode, $useIncludePath, $context);
         }
         restore_error_handler();
         if (!empty($this->connectionErrors)) {
             $lastError = end($this->connectionErrors);
             $exc = new BaseException($lastError['message']);
             $exc->setFile($lastError['file'])->setLine($lastError['line']);
             throw $exc;
         }
     } elseif (is_resource($stream)) {
         $this->handle = $stream;
     } else {
         throw new InvalidArgumentException('Stream argument type must be resource or string.');
     }
 }