我在config.json
文件中存储了一些网站配置数据,包括数据库连接参数和路由等。类似这样的东西:
{
"production" : { ... },
"test" : { ... },
"development" : { ... }
}
内容加载有:
$config = json_decode(file_get_contents('config'), true);
然而,在检查一些框架时,我发现PHP脚本直接用于配置存储:
<?php
return array(
'production' => array( ... ),
'test' => array( ... ),
'development' => array( ... )
);
<?php $config = (require 'config.php');
哪种方法是最好的?
使用config.php方法有几个优点:
- 当加载config.PHP文件时,PHP编译器会很快告诉您是否在该文件中有语法错误,而您必须等到解析JSON文件后才能发现任何错误
- PHP文件的加载速度将比解析第二个和后续页面加载的JSON文件更快,因为脚本将由web服务器缓存(如果支持并启用缓存)
- 安全漏洞的可能性较小。正如Michael Berkowski在评论中指出的那样,如果你没有将JSON文件存储在文档根目录之外或正确配置web服务器设置,web客户端将能够下载你的JSON文件并获得你的数据库用户名&密码并直接访问您的数据库。相比之下,如果web服务器被正确配置为通过php脚本引擎处理*.php文件,则即使它位于文档根目录下,客户端也无法直接下载config.php
不确定使用JSON而不是config.php是否真的有任何好处,除非您有用不同语言编写的多个应用程序(例如perl、python和php),它们都需要访问相同的共享配置信息。JSON可能还有其他优点,但目前还没有想到。
从PHP配置文件加载通常更快,而且它还支持更多功能,如闭包和字节码缓存(如果启用)。
请注意,PHP有一个特殊的功能可以快速加载.ini文件,该文件可以解析您的配置文件
如中所述:PHP parse_ini_file()性能?
它是加载配置文件的较快方法之一。
这是它的人:
http://php.net/manual/en/function.parse-ini-file.php