/** * Parse a YAML or INI file * * Performs variable replacing in the string taking them from the * $vars parameter and replacing in the strings where {key_name} is found. * @param string $file File to be parsed * @param array $vars Prefilled variables */ public static function parsea_mesta($file, $vars = array()) { $extension = pathinfo($file, PATHINFO_EXTENSION); if (!is_array($vars)) { throw new InvalidArgumentException("Function expected Array " . gettype($vars) . " received instead"); } self::$__vars = $vars; switch ($extension) { case 'yaml': self::parse_yaml_adv($file); $a =& self::$__vars; break; case 'ini': default: $a = self::parse_ini_adv($file); break; } $m = count($a); if (!$a || !is_array($a) || $m == 0) { return false; } foreach ($a as $key => &$value) { if (!is_array($value) && (is_string($value) || is_integer($value))) { self::$__stringvars[$key] = $value; self::$__keys[] = "{" . $key . "}"; } } switch ($extension) { case 'yaml': array_walk_recursive(self::$__vars, 'ConfigParser::remplaza_mesta'); array_walk(self::$__vars, "ConfigParser::reduce_mesta"); $vars = self::$__vars; self::$__imports = array(); self::$__vars = array(); self::$__keys = array(); self::$__stringvars = array(); return self::limpia_mesta($vars); case 'ini': array_walk_recursive($a, 'ConfigParser::remplaza_mesta'); /*self::$__imports = array(); self::$__vars = array(); self::$__keys = array(); self::$__stringvars = array();*/ return self::limpia_mesta($a); } }