9,11 → 9,11 |
* |
* @category PHP |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license GPL-v3 et CECILL-v2 |
* @version SVN: <svn_id> |
* @link /doc/framework/ |
* @link /doc/framework/ |
*/ |
|
class Config { |
73,14 → 73,14 |
} |
|
private static function parserFichierIni($fichier_ini) { |
$retour = false; |
$retour = false; |
if (file_exists($fichier_ini)) { |
$ini = parse_ini_file($fichier_ini, true); |
$ini = self::analyserTableauIni($ini); |
self::fusionner($ini); |
$retour = true; |
} |
return $retour; |
$retour = true; |
} |
return $retour; |
} |
|
private static function fusionner(array $ini) { |
93,19 → 93,19 |
} else { |
if (strpos($param, '.') !== false) { |
$pieces = explode('.', $param, 2); |
if (strlen($pieces[0]) && strlen($pieces[1])) { |
if (isset($config[$pieces[0]])) { |
if (is_array($config[$pieces[0]])) { |
return self::getValeur($pieces[1], $config[$pieces[0]]); |
} |
} |
} |
} else { |
if (isset($config[$param])) { |
return $config[$param]; |
} |
} |
return null; |
if (strlen($pieces[0]) && strlen($pieces[1])) { |
if (isset($config[$pieces[0]])) { |
if (is_array($config[$pieces[0]])) { |
return self::getValeur($pieces[1], $config[$pieces[0]]); |
} |
} |
} |
} else { |
if (isset($config[$param])) { |
return $config[$param]; |
} |
} |
return null; |
} |
} |
|
125,14 → 125,14 |
|
private static function analyserTableauIni($config = array()) { |
foreach ($config as $cle => $valeur) { |
if (is_array($valeur)) { |
$config[$cle] = self::analyserTableauIni($valeur); |
} else { |
if (is_array($valeur)) { |
$config[$cle] = self::analyserTableauIni($valeur); |
} else { |
self::evaluerReferences($config, $cle); |
self::evaluerPhp($config, $cle); |
self::evaluerCle($config, $cle, $config[$cle]); |
} |
} |
self::evaluerPhp($config, $cle); |
self::evaluerCle($config, $cle, $config[$cle]); |
} |
} |
return $config; |
} |
|
140,39 → 140,39 |
if (strpos($cle, '.') !== false) { |
unset($config[$cle]); |
$pieces = explode('.', $cle, 2); |
if (strlen($pieces[0]) && strlen($pieces[1])) { |
if (!isset($config[$pieces[0]])) { |
if ($pieces[0] === '0' && !empty($config)) { |
// convert the current values in $config into an array |
$config = array($pieces[0] => $config); |
} else { |
$config[$pieces[0]] = array(); |
} |
} elseif (!is_array($config[$pieces[0]])) { |
throw new ErrorException("Ne peut pas créer de sous-clé pour '{$pieces[0]}' car la clé existe déjà"); |
} |
$config[$pieces[0]] = self::evaluerCle($config[$pieces[0]], $pieces[1], $valeur); |
} else { |
throw new ErrorException("Clé invalide '$cle'"); |
} |
} else { |
$config[$cle] = $valeur; |
} |
return $config; |
if (strlen($pieces[0]) && strlen($pieces[1])) { |
if (!isset($config[$pieces[0]])) { |
if ($pieces[0] === '0' && !empty($config)) { |
// convert the current values in $config into an array |
$config = array($pieces[0] => $config); |
} else { |
$config[$pieces[0]] = array(); |
} |
} elseif (!is_array($config[$pieces[0]])) { |
throw new ErrorException("Ne peut pas créer de sous-clé pour '{$pieces[0]}' car la clé existe déjà"); |
} |
$config[$pieces[0]] = self::evaluerCle($config[$pieces[0]], $pieces[1], $valeur); |
} else { |
throw new ErrorException("Clé invalide '$cle'"); |
} |
} else { |
$config[$cle] = $valeur; |
} |
return $config; |
} |
|
private static function evaluerReferences(&$config, $cle) { |
if (preg_match_all('/{ref:([A-Za-z0-9_-]+)}/', $config[$cle], $correspondances, PREG_SET_ORDER)) { |
foreach ($correspondances as $ref) { |
$config[$cle] = str_replace($ref[0], self::getValeur($ref[1], $config), $config[$cle]); |
} |
} |
foreach ($correspondances as $ref) { |
$config[$cle] = str_replace($ref[0], self::getValeur($ref[1], $config), $config[$cle]); |
} |
} |
} |
|
private static function evaluerPhp(&$config, $cle) { |
if (preg_match('/^php:(.+)$/', $config[$cle], $correspondances)) { |
eval('$config["'.$cle.'"] = '.$correspondances[1].';'); |
} |
eval('$config["'.$cle.'"] = '.$correspondances[1].';'); |
} |
} |
|
public static function charger($fichier_ini) { |