Ejemplo n.º 1
0
 /**
  * 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);
     }
 }