如何存储用 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/