Same filename in this branch
- 10 core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php
- 10 core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php
Same filename and directory in other branches
- 8.9.x core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php
- 9 core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php
Namespace
Drupal\Core\File\MimeType
File
core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php
View source
<?php
namespace Drupal\Core\File\MimeType;
use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface;
use Symfony\Component\Mime\MimeTypeGuesserInterface;
class MimeTypeGuesser implements MimeTypeGuesserInterface {
protected $guessers = [];
protected $sortedGuessers = NULL;
protected $streamWrapperManager;
public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager) {
$this->streamWrapperManager = $stream_wrapper_manager;
}
public function guessMimeType(string $path) : ?string {
if ($wrapper = $this->streamWrapperManager
->getViaUri($path)) {
$real_path = $wrapper
->realpath();
if ($real_path !== FALSE) {
$path = $real_path;
}
}
if ($this->sortedGuessers === NULL) {
$this->sortedGuessers = $this
->sortGuessers();
}
foreach ($this->sortedGuessers as $guesser) {
$mime_type = $guesser
->guessMimeType($path);
if ($mime_type !== NULL) {
return $mime_type;
}
}
return NULL;
}
public function addMimeTypeGuesser(MimeTypeGuesserInterface $guesser, $priority = 0) {
if ($guesser
->isGuesserSupported()) {
$this->guessers[$priority][] = $guesser;
$this->sortedGuessers = NULL;
}
return $this;
}
public function isGuesserSupported() : bool {
return TRUE;
}
protected function sortGuessers() {
krsort($this->guessers);
return array_merge(...$this->guessers);
}
}
Classes
Name |
Description |
MimeTypeGuesser |
Defines a MIME type guesser that also supports stream wrapper paths. |