从JSON或PHP文件加载网站配置?

时间:2013-07-16 01:45:43

标签: php json

我已经将一些网站配置数据存储在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');

哪种方法最好?

3 个答案:

答案 0 :(得分:13)

使用config.php方法有几个好处:

  1. 如果在加载时config.php文件中存在语法错误,PHP编译器会告诉您,而您必须等到解析JSON文件以获取任何错误
  2. PHP文件的加载速度比解析第二页和后续页面加载的JSON文件要快,因为该脚本将由Web服务器缓存(如果支持和启用缓存)。
  3. 安全漏洞的可能性较小。正如Michael Berkowski在评论中指出的那样,如果您不将JSON文件存储在文档根目录之外或正确配置Web服务器设置,则Web客户端将能够下载您的JSON文件并获取您的数据库用户名&amp;密码并获得对数据库的直接访问权限。相比之下,如果正确配置Web服务器以通过PHP脚本引擎处理* .php文件,则客户端无法直接下载config.php,即使它位于文档根目录下。
  4. 不确定使用JSON而不是config.php确实有任何优势,除非你有多个用不同语言编写的应用程序(例如perl,python和php),这些应用程序都需要访问相同的共享配置信息。 JSON可能还有其他优点,但目前还没有人想到。

答案 1 :(得分:2)

从PHP配置文件加载通常更快,而且它还支持更多功能,例如闭包和字节码缓存(如果启用)。

答案 2 :(得分:2)

只需注意 - PHP有一个特殊功能,可以快速加载.ini文件,可以解析您的配置文件

如上所述: PHP parse_ini_file() performance?

这是加载配置文件的更快方法之一。

这是男人:

http://php.net/manual/en/function.parse-ini-file.php