1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Symfony\Component\HttpFoundation\File\MimeType;
13:
14: use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
15: use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
16:
17: 18: 19: 20: 21:
22: class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
23: {
24: private $magicFile;
25:
26: 27: 28: 29: 30: 31: 32:
33: public function __construct($magicFile = null)
34: {
35: $this->magicFile = $magicFile;
36: }
37:
38: 39: 40: 41: 42:
43: public static function isSupported()
44: {
45: return function_exists('finfo_open');
46: }
47:
48: 49: 50:
51: public function guess($path)
52: {
53: if (!is_file($path)) {
54: throw new FileNotFoundException($path);
55: }
56:
57: if (!is_readable($path)) {
58: throw new AccessDeniedException($path);
59: }
60:
61: if (!self::isSupported()) {
62: return;
63: }
64:
65: if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
66: return;
67: }
68:
69: return $finfo->file($path);
70: }
71: }
72: