在PHP中存储配置变量的最佳方法是什么?

2022-08-30 17:17:31

我需要在PHP中存储一堆配置信息。

我考虑了以下几点.

// Doesn't seem right.
$mysqlPass = 'password'; 

// Seems slightly better.
$config = array(
     'mysql_pass' => 'password'
);

// Seems dangerous having this data accessible by anything. but it can't be
// changed via this method.
define('MYSQL_PASSWORD', 'password'); 

// Don't know if this is such a good idea.
class Config
{
    const static MYSQL_PASSWORD = 'password';
}     

这就是我到目前为止所想到的。我打算将此配置信息导入到我的应用程序中。require /config.inc.php

在存储配置数据方面,什么对您有用,与此相关的最佳实践是什么?


答案 1

我总是选择选项#2,只是确保除了所有者之外没有人可以访问它。它是PHP应用程序中最受欢迎的方法,如Joomla,vBulletin,Gallery和许多其他应用程序。

第一种方法对我来说太混乱了(可读性),第三种方法太危险了。我从未想过Class方法,因此其他人可以提供他们对该方法的输入。但我想只要在类的用法上使用正确的访问权限就可以了。


例。。

define('EXAMPLE1', "test1"); // scenario 1
$example2 = "test2"; // scenario 2

function DealWithUserInput($input)
{
   return eval($input);
}

现在这个代码示例真的很愚蠢,但只是一个例子。考虑函数可能返回的内容,具体取决于用户可以尝试在其输入中使用的方案。

仅当在函数中将其设置为全局时,方案 2 才会导致问题。否则,它就超出了范围并且无法访问。


答案 2

我会说这也取决于用户群。如果配置必须非常用户友好,或者用户必须能够通过Web等更改配置。

我使用Zend Config Ini来实现此目的,其他设置存储在SQL DB中。


推荐