I would like to make use of somehting like [parse_ini_file][1].
Lets say for instance I have a boot.ini file that I will load for further procedure:
;database connection settings
[database]
type = mysql;
host = localhost;
username = root;
password = "";
dbName = wit;
However, I would like to have it in a different way as the php array would be:
$ini['database']['whatever']
So first of all I would like to have my boot.ini like this structure:
;database settings (comment same style)
db.host1.type = mysql;
db.host1.host = localhost;
db.host1.username = root;
db.host1.password = "";
db.host1.dbName = wit;
db.host2.type = mysql;
db.host2.host = otherHost;
db.host2.username = root;
db.host2.password = "";
db.host2.dbName = wit;
So when I now access the file I would like to access it this way:
$ini['db']['host1']['whatever']
And on top of that I would like to do it via OOP so lets say: $ini->db->host1->whatever
or `$ini->db->host1`
will return an array with all the attributes such as type, host, username, password and the dbName;
I appreciate anykind of help. Thank you very much in advance.
[1]: http://uk2.php.net/manual/en/function.parse-ini-file.php
Well, you need to postprocess the parse_ini_file result array then.
Update Hackety-Hack. Now using an extra
$prev
to unset the last object level again. (A for loop to detect the last $key would have worked better).If you want to use the array syntax and the object syntax, then replace the
new stdclass
withnew ArrayObject(array(), 2);
.I got an elegant solution for you. This implementation allows inheritance and vectors using dots as our collegue "zerkms" showed us before. In truth, I took his solution and improved it. Thus the solution be like Zend Parser :) I tested it and works. But, as we know, is impossible test all possibilities. Then, I hope attent people detect troubles and propose corrections.
Here goes the code (as a function):
And here goes an example of .ini file:
[environment]
env_name = production
x.y = 3
[oi : environment]
z = 5