| @@ 91-105 (lines=15) @@ | ||
| 88 | * @param string $extension |
|
| 89 | * @return DataFormatter |
|
| 90 | */ |
|
| 91 | public static function for_extension($extension) { |
|
| 92 | $classes = ClassInfo::subclassesFor("DataFormatter"); |
|
| 93 | array_shift($classes); |
|
| 94 | $sortedClasses = array(); |
|
| 95 | foreach($classes as $class) { |
|
| 96 | $sortedClasses[$class] = singleton($class)->stat('priority'); |
|
| 97 | } |
|
| 98 | arsort($sortedClasses); |
|
| 99 | foreach($sortedClasses as $className => $priority) { |
|
| 100 | $formatter = new $className(); |
|
| 101 | if(in_array($extension, $formatter->supportedExtensions())) { |
|
| 102 | return $formatter; |
|
| 103 | } |
|
| 104 | } |
|
| 105 | } |
|
| 106 | ||
| 107 | /** |
|
| 108 | * Get formatter for the first matching extension. |
|
| @@ 127-141 (lines=15) @@ | ||
| 124 | * @param string $mimeType |
|
| 125 | * @return DataFormatter |
|
| 126 | */ |
|
| 127 | public static function for_mimetype($mimeType) { |
|
| 128 | $classes = ClassInfo::subclassesFor("DataFormatter"); |
|
| 129 | array_shift($classes); |
|
| 130 | $sortedClasses = array(); |
|
| 131 | foreach($classes as $class) { |
|
| 132 | $sortedClasses[$class] = singleton($class)->stat('priority'); |
|
| 133 | } |
|
| 134 | arsort($sortedClasses); |
|
| 135 | foreach($sortedClasses as $className => $priority) { |
|
| 136 | $formatter = new $className(); |
|
| 137 | if(in_array($mimeType, $formatter->supportedMimeTypes())) { |
|
| 138 | return $formatter; |
|
| 139 | } |
|
| 140 | } |
|
| 141 | } |
|
| 142 | ||
| 143 | /** |
|
| 144 | * Get formatter for the first matching mimetype. |
|