public static function factory(array $config, $skipBadRules = false) { $main = self::checkAndReturnParam($config, 'main'); $error = self::checkAndReturnParam($config, 'error'); $defaultPrefix = self::checkAndReturnParam($config, 'defaultPrefix', ''); $rulesConfig = self::checkAndReturnParam($config, 'route', array()); $rules = array(); $skippedRules = array(); foreach ($rulesConfig as $ruleConfig) { $ruleConfig = self::_convertConfig($ruleConfig); try { $rule = Miao_Router_Rule::factory($ruleConfig); $rules[] = $rule; } catch (Miao_Router_Rule_Exception $e) { if (!$skipBadRules) { throw new Miao_Router_Exception($e->getMessage()); throw $e; } $skippedRules[] = $ruleConfig; } } $result = new static($main, $error, $rules, $defaultPrefix, $skippedRules); return $result; }
/** * @dataProvider dataProviderTestMakeRewrite */ public function testMakeRewrite(array $config, $actual) { $route = Miao_Router_Rule::factory($config); $expected = $route->makeRewrite(); $this->assertEquals($actual, $expected); }