php 对比 json 并停止编译器 hack

php ini vs json and halt compiler hack

我正在考虑为我正在设计的管理仪表板使用 configuration.ini 还是 config.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 文件一起使用?我还没有测试它只是因为我不想让任何奇怪的事情完全搞砸 up.As 以及关于为什么它有效的一个很好的描述,现在我知道这不适用于 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. 哪种配置格式最适合我的需要
  2. 如何防止 public
  3. 访问我的配置文件

2 的答案很简单。不要将配置文件放在 public 文档根目录中。

至于在 INI 或 JSON 之间进行选择,在没有非常清楚地了解用例的情况下,这是相当主观的。

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

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

第三个选择是 YAML,它是 INI 的人类可读性与 JSON.

的可移植性之间的一个很好的中间地带