public static function dispatch() { self::load_global_file(); $target = router::parse_php_uri(visitor::uri(), visitor::host()); $forward_times = 0; while (true) { if ($forward_times >= 8) { throw new developer_error('too many forwards'); } self::$global_filters = config::get_module('global_filters', null); try { self::dispatch_target($target); break; } catch (action_forward $forward) { $target = $forward->get_target(); config::set_module_name($target->get_module_name()); visitor::forward_cookies(); $forward_times++; continue; } catch (dispatch_return $return) { return; } } }