qua*_*oup 0 php arrays metaprogramming
在上一篇关于数组更好的语法的文章之后,我决定对数组使用JSON格式,并使用一种将其转换为PHP代码的方法。
请注意,此方法的最终目标是用JSON编写$ config数组并将其转换为PHP代码(因此,我可以避免使用PHP的丑陋数组语法):
该函数适用于任意大小和尺寸的数组,也许我可以通过使其自动缩进来改进它,但是没有更多的东西了。这里有人对如何改善它有任何建议吗?
你看到了var_export吗?看来您已经重新发明了它。
另外,如果要在JSON中定义配置,为什么要将其转换为PHP语法?为什么不只是以JSON形式读取它json_decode,然后按原样使用它呢?似乎保持以PHP格式和JSON格式序列化的数据确实很丑陋和不必要。
我也将回应琥珀在评论中所说的话……似乎您已经用一个更加丑陋的hack代替了难看但非常简单的PHP数组语法。没有冒犯,但这似乎不是一个好主意。这是 Kohana PHP框架中的配置文件示例。我发现该文件阅读起来并不十分丑陋,它是本机PHP,因此任何PHP开发人员都可以使用它。
我会尽最后的努力来说服你不要这样做。你要求改进你的想法的方法,你能做的最好的改进就是不去做。
这是来自 Kohana 的配置文件的 PHP 版本:
$test = array(
'default' => array(
'type' => 'mysql',
'connection' => array(
'hostname' => 'localhost',
'database' => 'kohana',
'username' => FALSE,
'password' => FALSE,
'persistent' => FALSE,
),
'table_prefix' => '',
'charset' => 'utf8',
'caching' => FALSE,
'profiling' => TRUE,
),
'alternate' => array(
'type' => 'pdo',
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=kohana',
'username' => 'root',
'password' => 'r00tdb',
'persistent' => FALSE,
),
'table_prefix' => '',
'charset' => 'utf8',
'caching' => FALSE,
'profiling' => TRUE,
),
);
Run Code Online (Sandbox Code Playgroud)
这是 JSON 版本:
var test = {
"default": {
"type": "mysql",
"connection": {
"hostname": "localhost",
"database": "kohana",
"username": false,
"password": false,
"persistent": false
},
"table_prefix": "",
"charset": "utf8",
"caching": false,
"profiling": true
},
"alternate": {
"type": "pdo",
"connection": {
"dsn": "mysql:host=localhost;dbname=kohana",
"username": "root",
"password": "r00tdb",
"persistent": false
},
"table_prefix": "",
"charset": "utf8",
"caching": false,
"profiling": true
}
};
Run Code Online (Sandbox Code Playgroud)
他们几乎一模一样。我真的看不到你得到了什么。