From 11cef32ff7d6cf66f74d5e25a41ab2afa751492f Mon Sep 17 00:00:00 2001 From: Ahmed TAILOULOUTE Date: Fri, 7 Feb 2020 21:24:18 +0100 Subject: [PATCH] [HttpFoundation] Make dependency on Mime component optional --- src/Symfony/Component/HttpFoundation/CHANGELOG.md | 1 + src/Symfony/Component/HttpFoundation/File/File.php | 4 ++++ src/Symfony/Component/HttpFoundation/File/UploadedFile.php | 4 ++++ src/Symfony/Component/HttpFoundation/composer.json | 5 ++++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/CHANGELOG.md b/src/Symfony/Component/HttpFoundation/CHANGELOG.md index c962d06b9b..659345c20c 100644 --- a/src/Symfony/Component/HttpFoundation/CHANGELOG.md +++ b/src/Symfony/Component/HttpFoundation/CHANGELOG.md @@ -12,6 +12,7 @@ CHANGELOG `__construct()` instead) * added `Request::preferSafeContent()` and `Response::setContentSafe()` to handle "safe" HTTP preference according to [RFC 8674](https://tools.ietf.org/html/rfc8674) + * made the Mime component an optional dependency 5.0.0 ----- diff --git a/src/Symfony/Component/HttpFoundation/File/File.php b/src/Symfony/Component/HttpFoundation/File/File.php index d79c27f68e..45f344e375 100644 --- a/src/Symfony/Component/HttpFoundation/File/File.php +++ b/src/Symfony/Component/HttpFoundation/File/File.php @@ -54,6 +54,10 @@ class File extends \SplFileInfo */ public function guessExtension() { + if (!class_exists(MimeTypes::class)) { + throw new \LogicException('You cannot guess the extension as the Mime component is not installed. Try running "composer require symfony/mime".'); + } + return MimeTypes::getDefault()->getExtensions($this->getMimeType())[0] ?? null; } diff --git a/src/Symfony/Component/HttpFoundation/File/UploadedFile.php b/src/Symfony/Component/HttpFoundation/File/UploadedFile.php index 3a258e29c6..90ee4b3daf 100644 --- a/src/Symfony/Component/HttpFoundation/File/UploadedFile.php +++ b/src/Symfony/Component/HttpFoundation/File/UploadedFile.php @@ -133,6 +133,10 @@ class UploadedFile extends File */ public function guessClientExtension() { + if (!class_exists(MimeTypes::class)) { + throw new \LogicException('You cannot guess the extension as the Mime component is not installed. Try running "composer require symfony/mime".'); + } + return MimeTypes::getDefault()->getExtensions($this->getClientMimeType())[0] ?? null; } diff --git a/src/Symfony/Component/HttpFoundation/composer.json b/src/Symfony/Component/HttpFoundation/composer.json index 224a74a9ec..61a4bb5544 100644 --- a/src/Symfony/Component/HttpFoundation/composer.json +++ b/src/Symfony/Component/HttpFoundation/composer.json @@ -17,13 +17,16 @@ ], "require": { "php": "^7.2.5", - "symfony/mime": "^4.4|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", + "symfony/mime": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0" }, + "suggest" : { + "symfony/mime": "To use the file extension guesser" + }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [