protected function _getNestedPropertyValue($sPropertyKeys) { $aNestedPropertyKeys = explode('.', $sPropertyKeys); $mPropertyValue = ArrayHelper::getNestedValue($this->_aProperties, $aNestedPropertyKeys, $bKeyExists); if (!$bKeyExists) { throw ExceptionType::outOfBounds("La propriété de configuration \"{$sPropertyKeys}\" n'est pas définie.", Exception::FROM_CONFIG); } return $mPropertyValue; }
/** * Initialise la structure par défaut du tableau des stats. * * @param string|array $sKeys Clés des éléments des statistiques à initialiser. Si aucune clé n'est renseignée, * l'intégralité du tableau des stats sera initialisé. */ protected function _setDefaultStatStructure($sKeys = null) { if (!$sKeys || $sKeys === '_aStats') { $this->_aStats = self::$_aDefaultStatStructure; } else { $aSubProperties = explode('.', $sKeys); // on retire la première prorpiété du tableau qui, en fait, est "_aStats" array_shift($aSubProperties); $mDefaultValue = ArrayHelper::getNestedValue(self::$_aDefaultStatStructure, $aSubProperties, $bKeyExists); if ($bKeyExists) { ArrayHelper::setNestedValue($this->_aStats, $aSubProperties, $mDefaultValue); } } }
/** * Retourne la ou les propriétés pointées par $sPropertyKeys. * * @param string $sPropertyKeys Propriété(s) à récupérer. Si vaut NULL, toutes les propriétés sont retournées.<br/> * Pour récupérér une valeur située en profondeur, il suffit de séparer les niveaux d'imbrication par des points. * @return mixed Propriété(s) pointée(s) par $sPropertyKeys. * @throws InvalidArgumentException * @throws OutOfBoundsException */ public function getProperty($sPropertyKeys = null, $mDefaultValue = null, &$bUnknownProperty = false) { if (!is_string($sPropertyKeys) && $sPropertyKeys !== null) { throw new InvalidArgumentException("Argument #1 doit être une chaîne de caractères désignant une propriété de configuration ou bien être NULL."); } if (is_string($sPropertyKeys)) { $aNestedPropertyKeys = explode('.', $sPropertyKeys); $mPropertyValue = ArrayHelper::getNestedValue($this->_aProperties, $aNestedPropertyKeys, $bKeyExists); if (!$bKeyExists) { $bUnknownProperty = true; $mPropertyValue = $mDefaultValue; } } else { $mPropertyValue = $this->_aProperties; } return $mPropertyValue; }