Help with variable variables not being set for a multi-dimensional array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've used variable variables before but for some reason I can't figure this
snippet out. Why doesn't $ini_file get set (or appended to). Is there a
better more elegant solution to parsing these keys and splitting them into
sub-array keys as you see what I'm trying to do. I was thinking some
recursion, but it seems overkill for such a simple task.

Given an .ini file like so:

[production]
agis_core.adapter         	= Mysqli
agis_core.params.host     	= 10.10.10.46
agis_core.params.username 	= USERNAME
agis_core.params.password 	= PASSWORD
agis_core.params.dbname   	= agis_core
agis_core.params.port	   	= 3306

I'm writing a simple parser (to be semi-compatible with the Zend Framework
one apparently but without the bloat of ZF)

require_once $path.'/../classes/IniParser.class.php';
try
{
	$config_ini = new IniParser($path.'/../config.ini', true, true);
}
catch (Exception $e)
{
	echo 'Caught Exception parsing ini
file.<br>'.$e->getMessage()."\n";
}


class IniParser
{
	private $file;
	public  $ini_array;

	function __construct($file, $process_sections=true, $explode=false)
	{
		$this->file = $file;
		$this->ini_array = parse_ini_file($file,$process_sections);
		if (!$this->ini_array)
		{
			//we only check this if we failed since Disk I/O is
expensive
			if (!file_exists($file)) throw new Exception('File
Not Found: '.$file);
		}

		if ($explode) $this->explode_ini();
	}

	public function explode_ini()
	{
		$ini_array = array();

		foreach($this->ini_array as $heading => $key_vals)
		{
			foreach ($key_vals as $k => $v)
			{
				$path = 'ini_array[\''.$heading.'\']';
				$subsection = explode('.', $k);
				foreach ($subsection as $ss) $path .=
'[\''.$ss.'\']';
				//echo $path.' = '.$v.'<br>';
				$$path = $v;
				var_dump($path, $$path, $ini_array);
			}
		}

		$this->ini_array = $ini_array;
	}
}
?>

But the $ini_array is not being set?!? Here is the output I get...

string 'ini_array['production']['agis_core']['adapter']' (length=47)

string 'Mysqli' (length=6)

array
  empty

string 'ini_array['production']['agis_core']['params']['host']' (length=54)

string '10.10.10.46' (length=11)

array
  empty

string 'ini_array['production']['agis_core']['params']['username']'
(length=58)

string 'USERNAME' (length=7)

array
  empty

...


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux