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