php ini vs json和halt编译器hack

时间:2015-07-18 02:19:35

标签: php json ini

我正在讨论使用configuration.iniconfig.json作为我正在设计的管理信息中心。我喜欢ini更多用于配置目的,但是今天对JSON的兴趣似乎更合乎逻辑,因为配置时考虑到了json。

这里的问题是我应该使用json吗?其次,我的configuration.ini文件中存在此hack,导致文件无法公开显示。

;<?php exit(); __halt_compiler();
; //to stop script execution if not used in our best interest!
; //remember this format

  //ini stuff

;?>

我想知道我是否可以在json文件中使用它?我还没有对它进行测试,因为我并不想要任何奇怪的事情,完全搞砸了所有内容。除了对其原理之外的一个很好的描述,现在我知道这不会特别适用于JSON ;基于ini的评论是否可以转换为///**/为json?

出于兴趣目的,这是我的admin__autoload.php页面

set_include_path(dirname($_SERVER["DOCUMENT_ROOT"]));   
$ini = parse_ini_file("configurations.ini",true);
foreach($ini as $section=>$values) {
    foreach($values as $key=>$value )   {
        define("__".strtoupper($key)."__",$value);
    }
}

spl_autoload_register(function($class) {
        if(!file_exists(get_include_path(). DIRECTORY_SEPARATOR .__ADMIN__."classes/{$class}.php")) {
            echo get_include_path(). DIRECTORY_SEPARATOR .__ADMIN__."classes/{$class}.php does not exist";
        } else {
            include_once get_include_path(). DIRECTORY_SEPARATOR .__ADMIN__."classes/{$class}.php";
        }
});

__ADMIN__是使用我的ini文件中的foreach循环创建的。

1 个答案:

答案 0 :(得分:3)

我想你在这里问两个不同的问题。

  1. 哪种配置格式最能满足我的需求
  2. 如何阻止公众访问我的配置文件
  3. 2的答案很简单。不要将配置文件放在公共文档根目录中。

    至于在INI或JSON之间进行选择,如果不清楚地理解用例,那就相当主观了。

    INI对读者更具表现力,但难以解析。 JSON作为序列化格式非常便携,但更难以作为人类阅读。

    因此,如果您手动编辑配置文件很多,那么使用INI作为比JSON稍微消除歧义是有意义的。如果您正在通过自主流程进行编辑,或者需要跨不同系统的可移植性进行编辑,那么JSON可能会更方便。

    第三种选择是YAML,它是INI人类可读方面与JSON可移植性之间的良好中间地带。