您好,我想将网页的配置保存在一个php文件中。想法是,无论是否与数据库建立连接,该配置均可用。我希望在php文件中更安全,即使没有禁止读取该文件的文件(json,txt ...)。我需要在页面中编辑值或动态添加新值,而不是滚动浏览文件。
为了解决我的问题,我发现使用了2种方法: 第一种以数组形式记录所有内容:
<?php return array(
'host' => 'localhost',
'username' => 'root', );
2nd将所有内容记录在一个平面文件数据库中,但是除This CodeIgniter Flat-File Database Library外,我找不到用php写文件的数据库 没有CodeIgniter谁不能独自工作。
基本上,如果我发现与示例类似的内容,我将选择第二个选项。第一个选项表示使用1个文件,该文件将难以维护,并且在录制时可能会破坏某些内容。您还可以提供其他选项来动态更改值并记录它们。
答案 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文件中。