* SPDX-License-Identifier: MIT */ declare(strict_types=1); namespace Respect\Validation\Rules; use Attribute; use Psr\Http\Message\UploadedFileInterface; use Respect\Validation\Message\Template; use Respect\Validation\Rules\Core\Simple; use SplFileInfo; use function function_exists; use function is_scalar; use function is_uploaded_file; #[Attribute(Attribute::TARGET_PROPERTY | Attribute::IS_REPEATABLE)] #[Template( '{{name}} must be an uploaded file', '{{name}} must not be an uploaded file', )] final class Uploaded extends Simple { public function isValid(mixed $input): bool { if ($input instanceof SplFileInfo) { return $this->isValid($input->getPathname()); } if ($input instanceof UploadedFileInterface) { return true; } if (!is_scalar($input)) { return false; } if (function_exists('mock_is_uploaded_file')) { return mock_is_uploaded_file((string) $input); } return is_uploaded_file((string) $input); } }