【问题标题】:Dynamic config file with advanced template具有高级模板的动态配置文件
【发布时间】:2015-01-25 10:31:02
【问题描述】:

我想像在运行时一样动态创建配置文件。我在数据库中有一个名为 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 页面。

【问题讨论】:

  • 你想通过拥有一个动态配置文件来完成什么?如果你想让同一个 Yii 应用程序为不同的用户使用不同的配置,首先需要一个配置来实例化。
  • @deacs 我们正在尝试为我们的应用程序制作一个自动安装程序,其中硬编码到main-local.phpparams-local.php 的参数应该在运行时可以更改。

标签: php yii2 yii2-advanced-app


【解决方案1】:

您始终可以使用闭包(匿名函数)将任何类型的参数获取到您想要的任何地方。

请看这里:Multi Tenant Multiple Database Setup

我要做的是使用像 memcached 这样的缓存服务器,确保在从数据库中读取值后缓存它们,你真的不希望一遍又一遍地运行相同的查询。然后使用闭包将您从数据库读取和缓存的数据合并到您拥有的任何默认值,同时仍使用相同的配置文件。

如果您真的想在 index.php 文件中加快速度,那么在读取配置时,您可以根据需要创建自己的配置数组(我仍然会使用 memcached)并使用该配置启动应用程序。配置文件基本上只是启动应用程序时使用的数组。

一件事,你可能不能在任何地方使用任何 yii 特定的函数,因为 Yii 应用程序在你启动它之后才可用(我的意思是使用配置),所以你可能必须直接在 PHP 中创建函数。

【讨论】:

  • 我也有同样的想法来创建我自己的配置文件。此外,我已经开始研究一个入门模板(高级),它将具有用于设置应用程序的 gui。我仍然对应用程序如何知道它第一次启动(意味着没有数据库连接或数据库根本不存在)感到困惑。如果是后一种情况,则应用程序将引导用户完成安装。所以,基本上我需要一种更强大的方法来处理这个问题。如果您有任何想法,请分享。谢谢。
  • 我将在不久的将来构建类似的东西。根据我收集的信息,我需要一个文件中的 1 个配置,即数据库配置。您可以将其移至其他文件并测试该文件是否存在,以确定这是否是您第一次启动它。我们正在尝试使整个安装过程自动化(仅限命令行),因此我们不会有这样的安装过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2017-09-20
  • 2014-08-26
  • 2019-08-20
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
相关资源
最近更新 更多