我正在编写一个针对非极客、非程序员的 PHP 应用程序。我需要创建一个带有一堆“选项”的选项页面,然后将这些选项存储在某个地方。使用数据库应用程序(MySQL/PostgreSQL/SQLite)是不可能的,因为它需要比用户需要做的更多的配置(如果他不想,我不希望用户做任何类型的配置) . 所以剩下的唯一解决方案就是将配置写入配置文件。另一方面,如果用户是极客并且他想直接编辑配置文件(或者如果他想通过 SSH 或任何原因远程编辑文件,我也希望该配置文件是人类可读的。 ..)
以下是我发现的几个潜在解决方案:
使用 JSON 文件...
...从文件中检索数据,使用 json_decode 转换数据,将其输出为 HTML,检索任何更改,使用 json_encode 进行编码等。你得到了图片。我不喜欢这种方法有几件事,主要是使用 PHP 编码的 JSON 数据不会被很好地格式化,并且如果不事先重新格式化就很难编辑。
使用 XML 文件
我不会描述那个解决方案,因为我也不是很喜欢它……而且我不知道如何使用 XSLT,也不想学习……而且因为它是一个相当重量级的解决方案,至少与 JSON 解决方案相比。如我错了请纠正我。
使用 INI 文件
我喜欢 INI 文件,我真的很喜欢它们!我认为它们确实是最易读的,而且很难搞砸(即:语法错误)。该解决方案的问题在于没有本地方式来编写/编辑 ini 文件。我发现了一个主题,显示了一种自定义方法来编写一个……如果我找不到更好的方法,这可能是我将采用的解决方案……
使用两个文件
最后一个解决方案似乎与 INI 解决方案一样合理。事实上,我可以使用一个 INI 文件作为“输入”(用户可以根据需要编辑的文件)和一个 XML/JSON 文件作为输出(每次用户使用更改选项时 PHP 都会编辑的文件)网络前端)。此时,如果用户直接编辑配置文件,最好的解决方案是要求用户手动重新加载配置,以便“输出”文件始终是最新的。
我知道上面的解决方案都不是完美的,这就是我创建这个主题来寻求建议的原因。什么是最好的解决方案?也许(可能)我错过了另一个解决方案。
最后一件事:YAML 不是一个有效的解决方案,因为如果你不习惯它,它会更容易弄乱语法。PHP 也不是一个解决方案,因为用 PHP 编辑 PHP 很痛苦。如果我想检索一些配置但不直接通过 Web 前端编辑它,PHP 只是一个很好的解决方案。