PHP 配置存储

标签 php configuration global-variables ini

如何存储用 PHP 编写的 Web 应用程序的配置?
我见过人们使用 .ini、基本的 .php 等。
另外,define() 还是简单的全局变量?
您可以找到的大部分信息。
另外,数据库是存储配置的好方法吗?

最佳答案

没有“最佳方式 (tm)”来存储您的应用程序配置。这实际上完全取决于您的应用程序、配置类型、它们可以/需要更改的频率,以及您希望更改它们的难易程度。

有些人在他们的应用程序中使用完整的单例(或静态)Config 类。看起来像这样(复杂程度不同):

<?php

class Config
{

    protected static $config = array();

    private function __construct() {} // make this private so we can't instanciate

    public static function set($key, $val)
    {
        self::$config[$key] = $val;
    }

    public static function get($key)
    {
        return self::$config[$key];
    }

}

这很方便,因为您可以在应用程序中的任何地方使用 Config::set()Config::get() 调用它。然后,您将拥有一个配置整个应用程序的中心位置,您可以根据需要使其变得复杂或简单。您可以将内容备份到数据库、内存缓存等。

这让我想到了下一件事。使用数据库对于需要能够即时更改并且不一定必须具有“初始设置”的事物来说很好。一个示例是站点应用程序自定义功能(例如,货币、背景颜色、标题图像等)。这里的问题是,每次在您的应用程序中加载页面时,您都必须加载它。所以要解决这个问题,您可以使用中间层缓存技术(如果您愿意,可以使用 memcached)。这会很快,比数据库快得多,但仍然会增加开销,因为您必须在每次页面加载时加载它。

最快也是最“难”改变的方法是使用 config.php 文件或类似文件。此文件将具有 $_GLOBALS 数组键定义,或 define() 用于您需要在整个应用程序中访问的值。这很快,因为它包含在请求中并在 PHP 中进行了硬编码,因此 PHP 所要做的就是解释文件——除了将文件包含到脚本中的最小开销之外,没有网络 IO 或任何额外的开销。您将存储在这些 PHP 文件中的内容是您的 MySQL 连接凭据、Web 服务连接凭据等。

对于拥有大量用户和大量定制的应用程序,您可能需要部署这些方法的“混合”,或者想出您自己的方法。对于只是标准应用程序部署的东西,您可以使用非常简单的 config.php 类型方法。

关于PHP 配置存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923778/

相关文章:

c++ - 全局填充 map

php - 在 Symfony 3.1.1 表单的输入文本字段中添加掩码

php - 如何在Azure中启用pdo_mysql?

windows - 客户端配置设置

c - 全局变量不好(在这种情况下)吗?

c++ - 为什么全局数组在只读模式下不消耗内存?

php - 如何在文本字段中插入逗号

php - 如何在 Symfony 中多次嵌入表单

python - 如何配置 JupyterHub 以显示与 Jupyter 相同的笔记本类型?

java - 您如何在 OSGi 中正确地将 ManagedServiceFactory 实现为声明式服务?