【问题标题】:Good practice for choosing a web configuration file saved in a php file?选择保存在 php 文件中的 web 配置文件的好习惯?
【发布时间】:2019-05-29 19:58:25
【问题描述】:

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

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

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

第二次将所有内容记录在平面文件数据库中,但我没有找到在 php 中写入文件的数据库,除了:This CodeIgniter Flat-File Database Library 没有 CodeIgniter,谁不能独自工作。

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

【问题讨论】:

  • 为什么不使用 sqlite 数据库?
  • json_encode 一个数组并写成一个平面文件怎么样?要阅读,json_decode 它回来瞧。
  • Aleks G - 我需要成为多平台窗口和 UNICS。 Kush - 我找不到支持 php 文件的平面文件数据库

标签: php config flat-file


【解决方案1】:

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

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%];

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

【讨论】:

  • 我不知道当值必须改变时会发生什么
【解决方案2】:

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

【讨论】:

  • @bedamusa 我并不是建议您应该使用该框架,而只是将其用作如何实现配置设置的示例。
  • 您的想法是只编辑 .env 文件? - like that
猜你喜欢
  • 1970-01-01
  • 2022-11-14
  • 2010-11-14
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
相关资源
最近更新 更多