/** * 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); } } }
/** * Affecte une ou plusieurs valeurs du tableau des propriétés de l'instance. * * @param array|string $mProperty Si vaut * <ul> * <li>array : l'ensemble des propriétés de l'instance sera remplacé par $mProperty.</li> * <li>string : seule la propriété pointée par $mProperty est affectée par la valeur $mValue.</li> * </ul> * Si la propriété pointée par $mProperty n'existe pas, elle est alors créée.<br/> * Si la propriété à affecter est en profondeur dans un tableau, les niveaux d'imbrication sont matérialisés dans $mProperty par des points. * @param mixed $mValue Valeur à affecter à la propriété pointée par $mProperties. * @return boolean TRUE si l'assignation a réussi ; FALSE dans le cas contraire. * @throws InvalidArgumentException */ public function setProperty($mProperty, $mValue = null) { if (is_array($mProperty)) { $this->_aProperties = array_merge($this->_aProperties, $mProperty); $bSuccess = true; } else { if (is_string($mProperty)) { $aNestedPropertyKeys = explode('.', $mProperty); $bSuccess = ArrayHelper::setNestedValue($this->_aProperties, $aNestedPropertyKeys, $mValue, true); } else { throw new InvalidArgumentException("Argument #1 doit être un tableau associatif ou le nom d'une propriété de configuration."); } } return $bSuccess; }
protected function _setNestedPropertyValue($sPropertyKeys, $mPropertyValue) { $aNestedPropertyKeys = explode('.', $sPropertyKeys); return ArrayHelper::setNestedValue($this->_aProperties, $aNestedPropertyKeys, $mPropertyValue); }