我想在运行时动态创建配置文件。我在数据库中有一个名为Settings
的表。它的结构如下:
|Column |Type |Length|
|id |int |11 |
|key |varchar |100 |
|value |varchar |255 |
|created_at |datetime| |
|updated_at |datetime| |
现在,当应用程序第一次启动时,应该检查它是否连接到数据库。如果没有,则应将其重定向到installer
页面。用户将输入必要的详细信息,并相应地生成配置文件,相同的数据将存储在Settings
表中以备将来使用。
我不想将任何值硬编码到配置文件中。那么,我该如何完成这项任务呢?有什么想法吗?
我想到了一个主意。如果我在params-local.php
文件中查找名为installed
的值为true
的参数,该怎么办?如果存在,我们说应用程序已成功安装,否则我们会将用户带到installer
页面。
答案 0 :(得分:1)
你总是可以使用闭包(匿名函数)来获得你想要的任何类型的参数。
见这里:Multi Tenant Multiple Database Setup
我要做的是使用像memcached这样的缓存服务器,确保在从数据库中读取值后缓存这些值,你真的不希望一遍又一遍地运行相同的查询。然后使用闭包将您已从DB读取和缓存的数据合并到您仍然使用相同配置文件时的任何默认值。
如果您真的想在index.php文件中加快速度,那么在阅读配置时,您可以按照自己的方式创建自己的配置数组(我仍然会使用memcached)并使用该配置启动应用程序。配置文件基本上只是启动应用程序时使用的数组。
1件事,您可能无法在任何一个地方使用任何yii特定功能,因为Yii应用程序将在您启动它之后可用(我的意思是配置),因此您可能必须直接在PHP中创建函数。