/** * Ajoute un nouveau dictionnaire de routes. * * @param array|\Aouka\ConfigSource\InterfaceConfigSource $mRouteDictionary Dictionnaire de routes. * @return Library */ public function addDictionary($mRouteDictionary) { $bConfigSource = $mRouteDictionary instanceof InterfaceConfigSource; if (!is_array($mRouteDictionary) && !$bConfigSource) { throw new InvalidArgumentException("Argument #1 doit être une instance de \\Aouka\\ConfigSource\\InterfaceConfigSource ou être un tableau."); } if ($bConfigSource) { $aRouteDictionary = $mRouteDictionary->getValue(); } else { $aRouteDictionary = $mRouteDictionary; } // On extrait le type de route du reste du dictionnaire $aValidDictionaryTypes = AbstractRouting::getValidDictionaryTypes(); if (!isset($aRouteDictionary[AbstractRouting::DICTIONARY_TYPE]) || !in_array($aRouteDictionary[AbstractRouting::DICTIONARY_TYPE], $aValidDictionaryTypes)) { throw new InvalidArgumentException("Argument #1 n'a pas de propriété [" . AbstractRouting::DICTIONARY_TYPE . "] défini à la racine ayant pour valeur : \"" . implode('" ou "', $aValidDictionaryTypes) . "\"."); } $this->_aDictionaries[$aRouteDictionary[AbstractRouting::DICTIONARY_TYPE]][] = $aRouteDictionary; return $this; }
public function setLibrary(Library $oLibrary) { parent::setLibrary($oLibrary); // Si les conditions sont réunies pour matcher URI et définitions if ($this->_hasConditionToFind()) { // on recherche dans les dictionnaires les définitions correspondant à l'URI $this->_updateDefinitions(); } return $this; }
protected static function _isValidDictionaryType(array $aDictionary) { $bValid = true; if (!isset($aDictionary[AbstractRouting::DICTIONARY_TYPE])) { $bValid = self::_recordInvalid($aDictionary, "La propriété " . AbstractRouting::DICTIONARY_TYPE . " doit être définie à la racine du dictionnaire."); } else { if (!in_array($aDictionary[AbstractRouting::DICTIONARY_TYPE], AbstractRouting::getValidDictionaryTypes())) { $bValid = self::_recordInvalid($aDictionary, "La propriété " . AbstractRouting::DICTIONARY_TYPE . " doit avoir l'une des valeurs suivantes : \"" . implode('", "', AbstractRouting::getValidDictionaryTypes()) . "\"."); } } return $bValid; }