_route = trim($route, $this->_urlDelimiter); $this->_defaults = (array) $defaults; $this->_requirements = (array) $reqs; } /** * @see Zend_Controller_Router_Route::match() */ public function match($path) { $this->_initialize(); return parent::match($path); } /** * @see Zend_Controller_Router_Route::assemble() */ public function assemble($data = array(), $reset = false, $encode = false) { $this->_initialize(); return parent::assemble($data, $reset, $encode); } // -------------- // Static methods // -------------- /** * Set default translation object for all translated routes. * * @param Zend_Translate|Zend_Translate_Adapter|null $translator * @return void */ public static function setDefaultTranslator($translator = null) { if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) { self::$_defaultTranslator = $translator; } elseif ($translator instanceof Zend_Translate) { self::$_defaultTranslator = $translator->getAdapter(); } else { throw new Zend_Validate_Exception('Invalid translator specified'); } } /** * Get default translation object for all validate objects * * @return Zend_Translate_Adapter|null */ public static function getDefaultTranslator() { if (null === self::$_defaultTranslator) { if (Zend_Registry::isRegistered('Zend_Translate')) { $translator = Zend_Registry::get('Zend_Translate'); if ($translator instanceof Zend_Translate_Adapter) { return $translator; } elseif ($translator instanceof Zend_Translate) { return $translator->getAdapter(); } } } return self::$_defaultTranslator; } // ----------------- // Protected methods // ----------------- /** * Lazy initialization. * * Prepares the route for mapping by splitting (exploding) it * to a corresponding atomic parts. These parts are assigned * a position which is later used for matching and preparing values. */ protected function _initialize() { if ($this->_initialized) { return; } // Get the translator $translator = self::getDefaultTranslator(); // NOTE: this code has been manly copied from the parent constructor if ($this->_route != '') { foreach (explode($this->_urlDelimiter, $this->_route) as $pos => $part) { // Translate if ($translator !== null) { if (substr($part, 0, 1) == $this->_urlTranslation) { $part = $translator->_(substr($part, 1)); } } if (substr($part, 0, 1) == $this->_urlVariable) { $name = substr($part, 1); $this->_parts[$pos] = (isset($reqs[$name]) ? $reqs[$name] : $this->_defaultRegex); $this->_variables[$pos] = $name; } else { $this->_parts[$pos] = $part; if ($part != '*') $this->_staticCount++; } } } // Done $this->_initialized = true; } } ?>