当前位置:  开发笔记 > 编程语言 > 正文

PHP配置存储

如何解决《PHP配置存储》经验,为你挑选了2个好方法。

如何存储用PHP编写的Web应用程序的配置?
我见过人们使用.ini,基本的.php等
.define()还是简单的全局变量?
您可以找到大多数信息.
此外,数据库是存储配置的好方法吗?



1> Jim Rubenste..:

存储应用程序配置没有"Best Way(tm)".这完全取决于您的应用程序,配置类型,它们可以/需要更改的频率,以及您希望如何轻松地更改它们.

有些人为Config他们的应用程序使用完整的单例(或静态)类.看起来像这样(具有不同程度的复杂性):



这很方便,因为您可以使用Config::set()或在应用程序中的任何位置调用它Config::get().然后,您可以在整个应用程序中配置一个中心位置,并且可以将其设置为复杂或简单.无论如何,您都可以将数据库,memcached等备份到数据库中.

这让我接下来的事情.对于需要能够即时更改并且不一定必须具有"初始设置"的事物,使用数据库是很好的.一个例子是站点应用程序定制功能(例如货币,背景颜色,标题图像等).这里的问题是,每次在应用程序中加载页面时都必须加载.因此,要解决这个问题,您可以使用中间层缓存技术(如果您愿意,可以使用memcached).这比数据库快,速度快,但仍然增加了开销,因为你必须在每个页面加载时加载它.

最快的方式,也就是"最难改变"的方法是使用config.php文件等.此文件将具有$_GLOBALS数组键定义,或者define()是您需要在整个应用程序中访问的值.这很快,因为它包含在请求中并在PHP中进行硬编码,因此所有PHP必须做的就是解释文件 - 没有网络IO或任何额外的开销,除了将文件包含到脚本中的最小开销.您在这些PHP文件中存储的内容包括MySQL连接凭据,Web服务连接凭据等.

对于拥有大量用户和大量自定义项的应用程序,您可能需要部署这些方法的"混合",或者提出自己的方法.对于只是标准应用程序部署的东西,您可能能够使用非常简单的config.php类型方法.


我认为配置类太过分了......你的Dispatcher也可能使用与你的模板不同的配置.你扩展了配置类吗?还是制作2件物品?或者把它全部放在1?在整个应用程序中使用过一次的类= overkill imo.

2> CharlesLeaf..:

我不认为有最好的方法,每种方法都有其优点和缺点.只需确保配置文件(特别是当它包含密码时)在公共目录中不可用,但在某个地方是私有的.

将配置存储在数据库中可能有效,但您仍需要在某处存储数据库连接信息以获取连接.我个人从未成为这种方法的粉丝.唯一的优点是可以轻松地在线更改配置项的值,或者在用户级别进行配置.

使用define();将创建常量,您无法在运行时更改该值.在某些情况下,这是有效的,在其他情况下,这不起作用.如果您希望您的配置随处可用 - 在每个范围内 - 您可以考虑将配置读入类(可能是单例模式?),以便您可以在任何地方访问配置值.

我已经使用了包含的php文件,.ini文件,XML文件和JSON文件进行配置,我个人更喜欢避免使用.php配置文件,因为我在Web应用程序中为不同的应用程序在多种语言之间共享配置文件,并坚持使用与其他'标准'.


+1用于公共文件夹建议并存储与语言无关的配置
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有