【问题标题】:Store data in txt/xml file, read/write to database?将数据存储在 txt/xml 文件中,读/写到数据库?
【发布时间】:2011-04-14 10:43:05
【问题描述】:

我的 wordpress 主题接受皮肤文件。这些皮肤文件都通过作为我主题一部分的 zip 上传器安装到我的主主题文件夹中。

每个皮肤都有一组自定义颜色代码(总共 4 个),它们存储在 wordpress 选项表中,如下所示...

假设皮肤名称是“万圣节”...这些是我的 options.php 中我的皮肤值之一的值...

halloween_color1 = 000000
halloween_color2 = ff0000
halloween_color3 = 777777
halloween_color4 = 333333

所以我只需要一种方法将这些值存储在每个新皮肤的文件夹(我发送给使用我的主题的人的文件夹)中,以便在他们安装皮肤时(通过简单的 zip 提取器上传)我可以放置将代码放入我的 zip 提取器中,以将皮肤的自定义颜色值写入数据库。

我假设一个简单的 colors.txt 或 colors.xml 文件就足够了。

我应该如何将数据存储在文本文件中以便轻松解析并将其写入数据库?名称/值对还是 XML?

<skin>
<color name="halloween_color1" value="000000" />
<color name="halloween_color2" value="000000" />
<color name="halloween_color3" value="000000" />
<color name="halloween_color1" value="000000" />
</skin>

【问题讨论】:

  • 当值被存储在数据库中时,为什么要首先将它们存储在文件中?
  • 皮肤在被部署到野外后被添加到主题中。必须有一些方法让皮肤文件向主题报告它的颜色,以便将它们写入数据库。
  • 说来话长,但我的皮肤都有背景 gif 图像,一旦安装皮肤,可以通过颜色选择器轻松更改,为皮肤提供无限的调色板。但最初的调色板是由皮肤本身定义的。因此,我没有用硬编码的背景颜色弄乱 css 值,而是使用平铺的 gif 图像作为背景,并允许用户通过颜色选择器更改这些背景图像的颜色。
  • @Pekka,希望我已经解释得足够好,但这不是普通的 WP 主题。它基本上是一个主题,需要在部署后创建的无限数量的皮肤文件(一个包含 css 文件和图像的文件夹)。我可以安装一个可以即时更改的主题,以获得完全不同的外观(想想 css zen garden)

标签: data-structures


【解决方案1】:

有多种选择。 PHP 可以原生读取的两个是ini 和CSV。

INI 示例:

[skin]
halloween_color1 = 000000
halloween_color2 = ff0000
halloween_color3 = 777777
halloween_color4 = 333333

CSV 示例:

halloween_color1;000000
halloween_color2;ff0000
halloween_color3;777777
halloween_color4;333333

就我个人而言,YAML 已成为人类可读的配置文件最喜欢的格式。

YAML 示例:

skin:
 halloween_colors:
   - 000000
   - ff0000
   - 777777
   - 333333

在我看来它的优点是:

  • 解析非常严格;如果它不喜欢文件的结构,它将立即退出并抛出错误

  • 它支持嵌套数据结构、关联数组的构建、类型和列表(很有用,例如,如果您想添加第五种万圣节颜色)

但是,它需要第三方库。这是否合理,您必须做出决定。 查看 PHP 解析器库列表here。

【讨论】:

  • 我不会看到足够的使用它来要求将一个库添加到我的主包安装中。我将检查 ini 文件方法,然后将一些代码添加到我的上传器以解析出值并将它们写入数据库。一如既往地感谢Pekka的输入:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多