public static function isValid($oRouteDictionary) { if (!is_array($oRouteDictionary) && !$oRouteDictionary instanceof InterfaceConfigSource) { throw new InvalidArgumentException("Argument #1 doit être un tableau ou un objet implémentant A\\ouka\\ConfigSource\\InterfaceConfigSource."); } if (is_array($oRouteDictionary)) { $oRouteDictionary = new PHPArray(uniqid(), $oRouteDictionary); } self::_reset(); $aValidRouteDefinitions = []; // Le type de dictionnaire est-il défini et correct ? if (self::_isValidDictionaryType($oRouteDictionary->getValue())) { // Existe-t-il au moins une route définie ? $aRouteDefinitions = $oRouteDictionary->getAllValues(AbstractRouting::ROUTE); if ($aRouteDefinitions) { // Pour chacune des définitions... foreach ($aRouteDefinitions as $aRouteDefinition) { // On harmonise les définitions uniques avec les définitions en liste // pour ça, on passe toutes les définitions uniques en liste. if (ArrayHelper::isAssociative($aRouteDefinition)) { $aRouteDefinition = [$aRouteDefinition]; } foreach ($aRouteDefinition as $aRouteDef) { $oRouteDefinition = new PHPArray(uniqid(), $aRouteDef); //... on récupère l'ID $mRouteId = $oRouteDefinition->getValue(AbstractRouting::ID, null); if (!is_string($mRouteId)) { self::_recordInvalid($aRouteDef, "La propriété " . AbstractRouting::ID . " est obligatoire et doit être définie en tant que chaîne de caractères."); } else { if (static::_isValidParam($aRouteDef)) { $aValidRouteDefinitions[] = $aRouteDef; } } } } } } return $aValidRouteDefinitions; }