/** * Returns a mapper, based on the $uri and $format * * @param string $uri File URI * @param string $format File format (extension or mime-type) or null * @return WideImage_Mapper **/ static function selectMapper($uri, $format = null) { $format = self::determineFormat($uri, $format); if (array_key_exists($format, self::$mappers)) { return self::$mappers[$format]; } $mapperClassName = 'WideImage_Mapper_' . $format; if (!class_exists($mapperClassName, false)) { $mapperFileName = WideImage::path() . 'Mapper/' . $format . '.php'; if (file_exists($mapperFileName)) { require_once $mapperFileName; } } if (class_exists($mapperClassName)) { self::$mappers[$format] = new $mapperClassName(); return self::$mappers[$format]; } throw new WideImage_UnsupportedFormatException("Format '{$format}' is not supported."); }