选择保存在php文件中的web配置文件的好做法是什么



你好,我想把我的网页配置保存在一个php文件中。其思想是,无论是否连接到数据库,配置都是可用的。我想在php文件中更加安全,即使没有禁止读取文件的文件(json,txt…)。我需要在页面中动态编辑值或添加新值,而不是滚动文件。

为了解决我的问题,我找到了两种方法:第一个以数组形式记录所有内容的:

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

第二,在平面文件数据库中记录所有内容,但我没有找到一个用php编写文件的数据库,除了:This CodeIgniter平面文件数据库库没有CodeIgniter谁不能独自工作。

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

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

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

现在,当你想加载配置时,你可以使用核心类:

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

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

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

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

第一个方法是一个不错的解决方案。通过这种方式,您可以创建多个配置文件,这些文件只是数组。如果配置包含敏感信息,则可以使用隐藏的.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文件中。

最新更新