StreamFactory.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace Http\Factory\Guzzle;
  3. use GuzzleHttp\Psr7\Stream;
  4. use GuzzleHttp\Psr7\Utils;
  5. use Psr\Http\Message\StreamFactoryInterface;
  6. use Psr\Http\Message\StreamInterface;
  7. use function function_exists;
  8. use function GuzzleHttp\Psr7\stream_for;
  9. use function GuzzleHttp\Psr7\try_fopen;
  10. class StreamFactory implements StreamFactoryInterface
  11. {
  12. public function createStream(string $content = ''): StreamInterface
  13. {
  14. if (function_exists('GuzzleHttp\Psr7\stream_for')) {
  15. // fallback for guzzlehttp/psr7<1.7.0
  16. return stream_for($content);
  17. }
  18. return Utils::streamFor($content);
  19. }
  20. public function createStreamFromFile(string $file, string $mode = 'r'): StreamInterface
  21. {
  22. if (function_exists('GuzzleHttp\Psr7\try_fopen')) {
  23. // fallback for guzzlehttp/psr7<1.7.0
  24. $resource = try_fopen($file, $mode);
  25. } else {
  26. $resource = Utils::tryFopen($file, $mode);
  27. }
  28. return $this->createStreamFromResource($resource);
  29. }
  30. public function createStreamFromResource($resource): StreamInterface
  31. {
  32. return new Stream($resource);
  33. }
  34. }