: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
declare (strict_types=1);
namespace YoastSEO_Vendor\GuzzleHttp\Psr7;
use InvalidArgumentException;
use YoastSEO_Vendor\Psr\Http\Message\StreamInterface;
use YoastSEO_Vendor\Psr\Http\Message\UploadedFileInterface;
class UploadedFile implements \YoastSEO_Vendor\Psr\Http\Message\UploadedFileInterface
private const ERRORS = [\UPLOAD_ERR_OK, \UPLOAD_ERR_INI_SIZE, \UPLOAD_ERR_FORM_SIZE, \UPLOAD_ERR_PARTIAL, \UPLOAD_ERR_NO_FILE, \UPLOAD_ERR_NO_TMP_DIR, \UPLOAD_ERR_CANT_WRITE, \UPLOAD_ERR_EXTENSION];
private $clientMediaType;
* @var StreamInterface|null
* @param StreamInterface|string|resource $streamOrFile
public function __construct($streamOrFile, ?int $size, int $errorStatus, string $clientFilename = null, string $clientMediaType = null)
$this->setError($errorStatus);
$this->clientFilename = $clientFilename;
$this->clientMediaType = $clientMediaType;
$this->setStreamOrFile($streamOrFile);
* Depending on the value set file or stream variable
* @param StreamInterface|string|resource $streamOrFile
* @throws InvalidArgumentException
private function setStreamOrFile($streamOrFile) : void
if (\is_string($streamOrFile)) {
$this->file = $streamOrFile;
} elseif (\is_resource($streamOrFile)) {
$this->stream = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($streamOrFile);
} elseif ($streamOrFile instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) {
$this->stream = $streamOrFile;
throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile');
* @throws InvalidArgumentException
private function setError(int $error) : void
if (\false === \in_array($error, \YoastSEO_Vendor\GuzzleHttp\Psr7\UploadedFile::ERRORS, \true)) {
throw new \InvalidArgumentException('Invalid error status for UploadedFile');
private static function isStringNotEmpty($param) : bool
return \is_string($param) && \false === empty($param);
* Return true if there is no upload error
private function isOk() : bool
return $this->error === \UPLOAD_ERR_OK;
public function isMoved() : bool
* @throws RuntimeException if is moved or not ok
private function validateActive() : void
if (\false === $this->isOk()) {
throw new \RuntimeException('Cannot retrieve stream due to upload error');
throw new \RuntimeException('Cannot retrieve stream after it has already been moved');
public function getStream() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface
if ($this->stream instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) {
return new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($file, 'r+');
public function moveTo($targetPath) : void
if (\false === self::isStringNotEmpty($targetPath)) {
throw new \InvalidArgumentException('Invalid path provided for move operation; must be a non-empty string');
$this->moved = \PHP_SAPI === 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath);
\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToStream($this->getStream(), new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w'));
if (\false === $this->moved) {
throw new \RuntimeException(\sprintf('Uploaded file could not be moved to %s', $targetPath));
public function getSize() : ?int
public function getError() : int
public function getClientFilename() : ?string
return $this->clientFilename;
public function getClientMediaType() : ?string
return $this->clientMediaType;