note 102420 deleted from function.parse-ini-file by danbrown

[email protected] Sun, 13 Feb 2011 11:54:02 -0800
Newsgroups php.notes
Message-ID <[email protected]>
Note Submitter: Mendi 

----

Here is a small improvement to jeremygiberson at gmail dot com function to avoid notices
<?
/**
     * Parses INI file adding extends functionality via ":base" postfix on namespace.
     *
     * @param string $filename
     * @return array
     */
    function parse_ini_file_extended($filename) {
         // if cannot open file, return false
	    if (!is_file($filename))
	        return false;
	
	    $p_ini = parse_ini_file($filename, true);
        $config = array();
        foreach($p_ini as $namespace => $properties){
        	$exploded = explode(':', $namespace);
        	$name = $exploded[0];
        	if(isset($exploded[1]))
           		$extends = $exploded[1];
           	else
           		$extends = false; 
            $name = trim($name);
            $extends = trim($extends);
            // create namespace if necessary
            if(!isset($config[$name])) $config[$name] = array();
            // inherit base namespace
            if(isset($p_ini[$extends])){
                foreach($p_ini[$extends] as $prop => $val)
                    $config[$name][$prop] = $val;
            }
            // overwrite / set current namespace values
            foreach($properties as $prop => $val)
            $config[$name][$prop] = $val;
        }
        return $config;
    }

?>