|
|
@@ -0,0 +1,73 @@
|
|
|
+<?php
|
|
|
+declare(strict_types=1);
|
|
|
+
|
|
|
+/**
|
|
|
+ * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
|
|
|
+ * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
|
|
|
+ *
|
|
|
+ * Licensed under The MIT License
|
|
|
+ * For full copyright and license information, please see the LICENSE.txt
|
|
|
+ * Redistributions of files must retain the above copyright notice.
|
|
|
+ *
|
|
|
+ * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
|
|
|
+ * @link https://cakephp.org CakePHP(tm) Project
|
|
|
+ * @since 5.0.0
|
|
|
+ * @license https://opensource.org/licenses/mit-license.php MIT License
|
|
|
+ */
|
|
|
+namespace Cake\Http;
|
|
|
+
|
|
|
+use Laminas\Diactoros\Stream;
|
|
|
+use Psr\Http\Message\StreamFactoryInterface;
|
|
|
+use Psr\Http\Message\StreamInterface;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Factory class for creating stream instances.
|
|
|
+ */
|
|
|
+class StreamFactory implements StreamFactoryInterface
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * Create a new stream from a string.
|
|
|
+ *
|
|
|
+ * The stream SHOULD be created with a temporary resource.
|
|
|
+ *
|
|
|
+ * @param string $content String content with which to populate the stream.
|
|
|
+ */
|
|
|
+ public function createStream(string $content = ''): StreamInterface
|
|
|
+ {
|
|
|
+ $resource = fopen('php://temp', 'r+');
|
|
|
+ fwrite($resource, $content);
|
|
|
+ rewind($resource);
|
|
|
+
|
|
|
+ return $this->createStreamFromResource($resource);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create a stream from an existing file.
|
|
|
+ *
|
|
|
+ * The file MUST be opened using the given mode, which may be any mode
|
|
|
+ * supported by the `fopen` function.
|
|
|
+ *
|
|
|
+ * The `$filename` MAY be any string supported by `fopen()`.
|
|
|
+ *
|
|
|
+ * @param string $filename The filename or stream URI to use as basis of stream.
|
|
|
+ * @param string $mode The mode with which to open the underlying filename/stream.
|
|
|
+ * @throws \RuntimeException If the file cannot be opened.
|
|
|
+ * @throws \InvalidArgumentException If the mode is invalid.
|
|
|
+ */
|
|
|
+ public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface
|
|
|
+ {
|
|
|
+ return new Stream($filename, $mode);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create a new stream from an existing resource.
|
|
|
+ *
|
|
|
+ * The stream MUST be readable and may be writable.
|
|
|
+ *
|
|
|
+ * @param resource $resource The PHP resource to use as the basis for the stream.
|
|
|
+ */
|
|
|
+ public function createStreamFromResource($resource): StreamInterface
|
|
|
+ {
|
|
|
+ return new Stream($resource);
|
|
|
+ }
|
|
|
+}
|