【问题标题】:What's the best way to manage a variable that is shared across multiple php pages?管理跨多个 php 页面共享的变量的最佳方法是什么?
【发布时间】:2013-06-18 05:17:50
【问题描述】:

我有一些页面共享一个公共变量。起初,我只是将$max = 196; 复制到每个页面中以进行更新。这显然是一种不好的方法,因为它需要更多的工作并且很容易出错。我想改变它,这样我就可以在一个地方改变这个变量的值,并且在任何地方都使用这个值。

现在,我把include 'rises.php';放在每一页而不是实际变量上,rises.php的内容是<?php $max=196; ?>

我也试过了……

  • 196 保存到一个 .txt 文件中,每个页面使用 `fopen() 打开它。
  • 创建一个小型 MySQL 表,其中仅保存此变量名及其值。

所以我的问题是......

在多个页面需要使用变量的情况下,管理变量的最佳方法是什么?就我而言,它只有 5-6 页,但每个页面都会加载很多次。

【问题讨论】:

  • stackoverflow.com/q/2921469/1273830 你需要的可能是一个互斥锁。而且,编写可重用的代码总是一个好主意,就像那个问题的答案一样。
  • 在单独的文件中进行配置是可以的,会话与问题完全无关。因此,您当前的解决方案是可以接受的,并且比会话更好
  • @zerkms 是对的——如果它只是一个你需要在各种文件中使用的值,那么将它放入包含文件中是可行的方法。不知道为什么您觉得需要多次加载它 - 只需在页面顶部包含一次,然后根据需要使用它。当然,除非您每次使用时都对其进行修改。
  • 值会始终保持不变吗?或者您是否需要在您的页面中更新它并且它应该反映在所有页面中?它是只读值吗?
  • 没有值每隔几天改变一次。我想在一个地方更改它,所有页面都显示更新后的值。我目前的方法确实有效,但我不确定将所有这些包括在所有地方是否是个好主意。

标签: php mysql variables


【解决方案1】:

最好的方法是创建具有数组的特殊单例类(建议 $params),然后包含这个单例并在每个页面上使用参数。 你必须实现类似http://code.google.com/p/data-registry/

【讨论】:

【解决方案2】:

您可以使用会话变量...

session_start();
$_SESSION['max'] = 96;
//to print your variable
echo $_SESSION['max'];

【讨论】:

  • 我是否必须在我的所有页面上添加$_SESSION['max'] = 96;?如果是这样,那么我只需要在所有页面上更新它,这使得这毫无意义。我在这里错过了什么?
  • 您不必这样做。只需在一页中定义 $_SESSION['max'] 即可。然后,您可以在所有页面中使用此会话变量。
【解决方案3】:

PHP 提供了sessions,这是一种在页面之间持久化数据的方法。

这是你如何使用它们的:

  1. 每一页非常顶部添加<?php session_start(); ?>。它应该是 php 文件的绝对第一行,甚至在任何空行之前。

  2. 如果您想在页面中设置一个变量,请执行此操作$_SESSION['name'] = "value";

  3. 在要检索变量的页面中,相反:$foo = $_SESSION['name'];

PHP 将负责传递值。您不必包含任何特殊文件或担心数据库。

但是,会话不是永久性的。它不是放置设置和“常量”的地方。为此,您当前的解决方案很好。不过,对于临时数据,建议使用会话。


“在页面中你想设置一个变量”......就是这样...... 这些页面中的任何一个都可以先加载。页面都是 彼此独立。它在哪里加载原始变量?

使用auto_prepend_file 来解决这个问题。

【讨论】:

  • 为什么不将它保存在文件中,就像 OP 目前所做的那样?
  • "您不必包含任何特殊文件" --- 但您必须担心到处都有session_start()。那么有什么区别呢?
  • “你想在页面中设置一个变量吗”......就是这样......这些页面中的任何一个都可以先加载。这些页面都是相互独立的。它在哪里加载原始变量?我不明白这将如何解决我遇到的问题。
猜你喜欢
  • 1970-01-01
  • 2014-06-25
  • 2010-09-30
  • 2010-09-07
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多