简介
我开发了自己的框架,实际上一切都很好。但现在我有一个重要的功能来实现:配置文件。我现在做的很简单,我有这个结构:
system
application
index.php
config.php
.htaccess
根目录中的config.php
文件具有框架的基本配置。在application
文件夹中,我有另一个与我在框架上运行的php应用程序相关的配置文件。
文件的工作方式
实际上config.php
文件夹中包含的application
文件具有以下结构:
$config['LANGUAGE'] = defined('Config::Language') ? Config::LANGUAGE : 'english';
如何看到有一个数组$config
来检查是否定义了一个特定的常量,而不是传递的值。请注意,Config
是位于我的根目录中的config.php
文件的类。
问题
现在这个机制出了问题。我需要通过无线方式更改一些配置,因此当我的应用程序被使用时。采用先前的配置,我从位于根目录的config.php
文件中获取默认语言。但我可以通过我为编辑此值而创建的Settings
类设置值。
Settings
课程提供两种方法:getItem
和setItem
。
实际上我已经使用会话来允许应用程序不丢失之前设置的配置:
Settings::setItem('LANGUAGE', 'italian');
此值存储为:
public static function setItem($name, $value)
{
$_SESSION[$name] = $value;
}
这种工作方式我觉得不是最好的选择'因为我需要开发一个包含多个数据库的多租户应用程序,所以我需要存储敏感的凭据。并且$ _SESSION可能不是存储它的正确位置。
我注意到一些框架使用与Codeigniter相同的逻辑(两次config.php文件),但我记得我过去使用过CI,因为我存储了凭据:
$this->config->set_item('some item');
这是被保留的。那么,最好的方法是什么?