vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php line 53

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\HttpFoundation\File\MimeType;
  11. use Symfony\Component\Mime\MimeTypes;
  12. @trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.'ExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
  13. /**
  14.  * A singleton mime type to file extension guesser.
  15.  *
  16.  * A default guesser is provided.
  17.  * You can register custom guessers by calling the register()
  18.  * method on the singleton instance:
  19.  *
  20.  *     $guesser = ExtensionGuesser::getInstance();
  21.  *     $guesser->register(new MyCustomExtensionGuesser());
  22.  *
  23.  * The last registered guesser is preferred over previously registered ones.
  24.  *
  25.  * @deprecated since Symfony 4.3, use {@link MimeTypes} instead
  26.  */
  27. class ExtensionGuesser implements ExtensionGuesserInterface
  28. {
  29.     /**
  30.      * The singleton instance.
  31.      *
  32.      * @var ExtensionGuesser
  33.      */
  34.     private static $instance null;
  35.     /**
  36.      * All registered ExtensionGuesserInterface instances.
  37.      *
  38.      * @var array
  39.      */
  40.     protected $guessers = [];
  41.     /**
  42.      * Returns the singleton instance.
  43.      *
  44.      * @return self
  45.      */
  46.     public static function getInstance()
  47.     {
  48.         if (null === self::$instance) {
  49.             self::$instance = new self();
  50.         }
  51.         return self::$instance;
  52.     }
  53.     /**
  54.      * Registers all natively provided extension guessers.
  55.      */
  56.     private function __construct()
  57.     {
  58.         $this->register(new MimeTypeExtensionGuesser());
  59.     }
  60.     /**
  61.      * Registers a new extension guesser.
  62.      *
  63.      * When guessing, this guesser is preferred over previously registered ones.
  64.      */
  65.     public function register(ExtensionGuesserInterface $guesser)
  66.     {
  67.         array_unshift($this->guessers$guesser);
  68.     }
  69.     /**
  70.      * Tries to guess the extension.
  71.      *
  72.      * The mime type is passed to each registered mime type guesser in reverse order
  73.      * of their registration (last registered is queried first). Once a guesser
  74.      * returns a value that is not NULL, this method terminates and returns the
  75.      * value.
  76.      *
  77.      * @param string $mimeType The mime type
  78.      *
  79.      * @return string The guessed extension or NULL, if none could be guessed
  80.      */
  81.     public function guess($mimeType)
  82.     {
  83.         foreach ($this->guessers as $guesser) {
  84.             if (null !== $extension $guesser->guess($mimeType)) {
  85.                 return $extension;
  86.             }
  87.         }
  88.         return null;
  89.     }
  90. }