/** * Build 'type_map', 'all_type_map' and 'undefined_type_map'. */ private static function build_maps() { foreach (self::$type_map as $type => $params) { $params->type = $type; self::apply_global($params); } self::$all_type_map = self::$type_map; for ($i = 0; $i < count(self::$all_types); $i++) { $tocheck = self::$all_types[$i]; if (!isset(self::$type_map[$tocheck])) { for ($j = $i - 1; $j >= 0; $j--) { $target = self::$all_types[$j]; if (isset(self::$type_map[$target])) { self::$all_type_map[$tocheck] = self::$type_map[$target]; self::$undefined_type_map[$tocheck] = $target; break; } } } } }