选择保存在php文件中的网络配置文件的好习惯?

时间:2019-01-03 08:30:35

标签: php config flat-file

您好,我想将网页的配置保存在一个php文件中。想法是,无论是否与数据库建立连接,该配置均可用。我希望在php文件中更安全,即使没有禁止读取该文件的文件(json,txt ...)。我需要在页面中编辑值或动态添加新值,而不是滚动浏览文件。

为了解决我的问题,我发现使用了2种方法: 第一种以数组形式记录所有内容:

<?php return array(
'host' => 'localhost',
'username' => 'root', );

2nd将所有内容记录在一个平面文件数据库中,但是除This CodeIgniter Flat-File Database Library外,我找不到用php写文件的数据库 没有CodeIgniter谁不能独自工作。

基本上,如果我发现与示例类似的内容,我将选择第二个选项。第一个选项表示使用1个文件,该文件将难以维护,并且在录制时可能会破坏某些内容。您还可以提供其他选项来动态更改值并记录它们。

2 个答案:

答案 0 :(得分:0)

最好的方法可能是创建一个静态类,该类在初始化时将配置加载到注册表中。看看:

Class Core { /** @var array $registry Static array for registry variables */ public static $registry = []; }

现在,当您要加载配置时,可以只使用Core类:

Core::$registry['config'] = include('./config.php');

现在,当您需要配置时,您可以按以下方式访问阵列:

Core::$registry['config'][%your_array_path_for_your_config_item%];

要知道它也可以用于许多其他事情,请考虑在此处保存调度和其他运行时变量。

答案 1 :(得分:0)

第一种方法是一个很好的解决方案。这样,您可以制作多个只是阵列的配置文件。如果配置中包含敏感信息,则可以使用隐藏的.env文件,并且在您的配置中,请引用这些.env值。这样,您可以针对多个环境进行多种配置,而无需更改配置文件本身。

Laravel有一个解决此问题的好方法。 https://github.com/laravel/laravel

laravel示例:

config / databases.php

'sqlite' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE', database_path('database.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
], 

env()的第二个值表示默认值。实际值保存在版本控制之外的.env文件中。