private static function initTypeToExtension()
{
// Skip when already done.
if (self::$typeNameToExtension !== null) {
return self::$typeNameToExtension;
}
self::$typeNameToExtension = array('iterator' => '+standard');
$extensionNames = get_loaded_extensions();
$extensionNames = array_map('strtolower', $extensionNames);
foreach ($extensionNames as $extensionName) {
$extension = new \ReflectionExtension($extensionName);
$classNames = $extension->getClassNames();
$classNames = array_map('strtolower', $classNames);
foreach ($classNames as $className) {
self::$typeNameToExtension[$className] = '+' . $extensionName;
}
}
return self::$typeNameToExtension;
}