【问题标题】:Best way to store global variables存储全局变量的最佳方式
【发布时间】:2010-10-01 05:48:25
【问题描述】:

我正在用 PHP 编写一个应用程序,它使用了整个脚本中使用的大量全局变量。现在,我有一个配置文件,其中存储了使用define() 函数创建的一堆全局变量,但是由于我将有这么多,最好在数据库中创建一个表,它只包含变量名和值,以及访问它们有一个查询数据库、查找变量、返回值并缓存值以供将来使用的函数。

我也欢迎其他存储全局变量的想法。

【问题讨论】:

  • 如果您使用的全局变量太多以至于您觉得有必要提出这个问题,那么您很有可能通过重构来改进您的代码。
  • 你在常量中存储什么样的数据?配置选项?有些东西告诉我你不是在编写面向对象的代码,这有时是可以的,但是当事物在相互关联的对象中时,会有很大的力量。您使用常量的事实证实了这一点。

标签: php mysql


【解决方案1】:

define() 函数创建常量,而不是全局变量。应谨慎使用全局变量,因为它们可能会被意外(或恶意!)损坏,但常量是完全安全的。

我发现只有一个名为“config.php”的文件来设置所有常量是最简单的,它更快更简单。

【讨论】:

  • 是的,我认为我现在的做法很好,因为它是最快的方法。
【解决方案2】:

嗯,这取决于您的应用程序的结构。如果在给定的页面加载中,您实际上只需要数百个变量中的一个或两个,那么基准测试可能会表明查询数据库可能比包含大量配置文件更快。但是,每次用户想要做任何事情时,您都需要警惕过多的查询使您的数据库陷入困境。缓存可以减少冗余请求所增加的开销,但这就是它的使用范围。

如果这些变量主要是短字符串或布尔标志,我认为您的答案将很大程度上取决于您能够很好地维护什么。如果这些变量很少更改并且总是手动更改,那么结构良好的 .ini 文件将比大型数据库更容易维护。如果这些变量不断变化并且从不手动更改,那么将所有变量加载到数据库中可能会更聪明。

就个人而言,我发现自己在这两种情况下都相应地使用了这两种方法。如果你真的优柔寡断,你总是可以做一些基准测试。为从数据库中提取配置信息的页面加载计时,然后使用 .ini 文件(或包含 define()s 的 .php 文件)为页面加载计时。

(学究式地说,define() 在全局范围内创建常量,而不是全局变量。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2022-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多