| @@ 114-129 (lines=16) @@ | ||
| 111 | * @param string $extension |
|
| 112 | * @return DataFormatter |
|
| 113 | */ |
|
| 114 | public static function for_extension($extension) |
|
| 115 | { |
|
| 116 | $classes = ClassInfo::subclassesFor(DataFormatter::class); |
|
| 117 | array_shift($classes); |
|
| 118 | $sortedClasses = array(); |
|
| 119 | foreach ($classes as $class) { |
|
| 120 | $sortedClasses[$class] = singleton($class)->stat('priority'); |
|
| 121 | } |
|
| 122 | arsort($sortedClasses); |
|
| 123 | foreach ($sortedClasses as $className => $priority) { |
|
| 124 | $formatter = new $className(); |
|
| 125 | if (in_array($extension, $formatter->supportedExtensions())) { |
|
| 126 | return $formatter; |
|
| 127 | } |
|
| 128 | } |
|
| 129 | } |
|
| 130 | ||
| 131 | /** |
|
| 132 | * Get formatter for the first matching extension. |
|
| @@ 154-169 (lines=16) @@ | ||
| 151 | * @param string $mimeType |
|
| 152 | * @return DataFormatter |
|
| 153 | */ |
|
| 154 | public static function for_mimetype($mimeType) |
|
| 155 | { |
|
| 156 | $classes = ClassInfo::subclassesFor(DataFormatter::class); |
|
| 157 | array_shift($classes); |
|
| 158 | $sortedClasses = array(); |
|
| 159 | foreach ($classes as $class) { |
|
| 160 | $sortedClasses[$class] = singleton($class)->stat('priority'); |
|
| 161 | } |
|
| 162 | arsort($sortedClasses); |
|
| 163 | foreach ($sortedClasses as $className => $priority) { |
|
| 164 | $formatter = new $className(); |
|
| 165 | if (in_array($mimeType, $formatter->supportedMimeTypes())) { |
|
| 166 | return $formatter; |
|
| 167 | } |
|
| 168 | } |
|
| 169 | } |
|
| 170 | ||
| 171 | /** |
|
| 172 | * Get formatter for the first matching mimetype. |
|