gpt4 book ai didi

php parse_ini_file oop & 深度

转载 作者:行者123 更新时间:2023-12-01 23:14:04 27 4
gpt4 key购买 nike

我想使用像 [parse_ini_file][1] 这样的东西。

例如,我有一个 boot.ini 文件,我将加载该文件以进行进一步的处理:

    ;database connection settings
[database]
type = mysql;
host = localhost;
username = root;
password = "";
dbName = wit;

但是,我想以与 php 数组不同的方式使用它:

$ini['database']['whatever']

所以首先我想让我的 boot.ini 像这样的结构:

;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;

所以当我现在访问文件时,我想以这种方式访问​​它:

$ini['db']['host1']['whatever']

最重要的是,我想通过 OOP 来完成,所以可以说:$ini->db->host1->随便

or `$ini->db->host1` 

将返回一个数组,其中包含所有属性,例如类型、主机、用户名、密码和数据库名称;

我感谢任何形式的帮助。非常感谢您。

  [1]: http://uk2.php.net/manual/en/function.parse-ini-file.php

最佳答案

那么,您需要对 parse_ini_file 进行后处理然后是结果数组。

$ini_array = parse_ini_file("bootstrap.ini");

$ini = new stdclass;
foreach ($ini_array as $key=>$value) {
$c = $ini;
foreach (explode(".", $key) as $key) {
if (!isset($c->$key)) {
$c->$key = new stdclass;
}
$prev = $c;
$c = $c->$key;
}
$prev->$key = $value;
}

更新 Hackety-Hack。现在使用额外的 $prev 再次取消设置最后一个对象级别。 (检测最后一个 $key 的 for 循环会更好)。

如果您想使用数组语法对象语法,请将new stdclass 替换为new ArrayObject(array(), 2);.

关于php parse_ini_file oop & 深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com