PHP 全局变量可供应用程序和其他用户使用

问题描述 投票:0回答:4

PHP 全局变量

  1. 它们是否在应用程序范围内可用,例如:如果它们是在 index.php 文件中的值是否可用
  2. 每个用户的全局变量值是否相同。说我有 一个用户正在做某事,他的全局变量值为 1。 第二个访问同一页面的用户他的值也是1吗? 编辑:
  3. 从这里获取建议:我决定使用参考值
  4. 我需要达到的结果是:
  5. 新会话应具有相同的结果,并且未包含的任何其他文件中的 $name 变量不应与此变量关联。

名称:初始 vj 名称:vj 名称:file2 中的 vj 名称:vj

代码:


<?php 

$name ;
$name ='initial vj';

echo '<br/>name: ' .$name;

test($name);

function test(&$name)
{

    $name = 'vj';
    echo '<br/>name: ' .$name;
}


echo '<br/>name: ' .$name;


include('file2.php');

?>
<?php

$name;

echo '<br />name in file2: ' .$name;


?>
php global-variables
4个回答
2
投票

这个概念称为“应用范围”。 PHP 更适合会话、请求或页面范围。要将数据放置在 PHP 的应用程序范围内,更常见的是进行数据库调用来获取值。

我们可以使用 $_SESSION、$_REQUEST 或 $_POST 和 $_GET 等超全局变量来将变量分配到超出一页、会话、请求或页面范围内。 PHP 没有通用的、类似的方法来为应用程序范围内的变量赋值。相反,应用程序范围通常是通过调用外部数据源(例如数据库或文件)来模仿的。 PHP 的早期版本有一些倾向于应用程序范围概念的功能,但它们已被弃用。

对于您的问题:

  1. 这个问题展示了应用程序范围变量的想法。例如,如果您希望每个用户在 index.php 上输入一个值并将其写入数据库,那么可以在创建 file.php 期间进行调用来检索该值。

我们通常将这种代码编写为 $_SESSION 变量,一次可供一个用户使用,而不是由一个用户为所有用户执行此操作。我们常见的是使用数据库写入和数据库读取来解决此类问题。只需由编写它的用户记下该值即可。送给读者吧。

  1. 这是静态应用程序范围变量的概念。要实现此目的,只需让两个用户进行类似的数据库调用即可检索相同的值。

有一个名为 $GLOBALS 的超级全局,但它更多的是用于注释变量如何命名的快捷方式。这不是一个会给变量带来应用范围的功能。

JSP 允许通过简单声明来使用应用程序范围的变量。 ASP 允许通过 XML 进行应用程序配置来使用应用程序范围的变量。 PHP 不直接在变量、对象或类的上下文中使用应用程序范围。

php man 范围 php 人保留

jsp应用范围 jsp应用范围

ms kb asp 应用程序范围变量 php man 超全局变量


1
投票

全局并不意味着世界上每个人都可以使用这些变量。全局是指该会话中的所有对象。会话之间不进行通信。如果他们真的这么做的话,那将是一场噩梦。

如果您有一个需要共享的变量,您应该将其保存在数据库中,并且每个用户都会调用该变量来使用它。


1
投票

如果你重视理智,就不要使用全局变量。上帝保佑他们有一天不会像你想象的那样。

是的,在index.php中声明的全局变量在file.php中可用。这就是问题开始的地方。假设全局变量的值有错误,例如 $myGlobal。

  1. 如果有任何文件可能更改 $myGlobal 的变量,您如何知道这个错误值是在哪里引入的? (考虑一个复杂的 Web 应用程序可能有数百个、有时数千个文件的事实。)
  2. 您会在什么时候监控 $myGlobal 的值来调试您的程序?

这只是反对全局变量的一点。还有很多其他的。

如果事情如你所说,如果一个全局变量可以被所有会话共享,那么混乱会更大。感谢上帝,也感谢语言设计者,全局变量是全局的仅在会话范围内


0
投票

写入 txt 文件,然后在需要时读取。

$yourvalue=202406;
file_put_contents('global.txt',$yourvalue);

//read when needed
$yourvalue=file_get_contents('global.txt')
© www.soinside.com 2019 - 2024. All rights reserved.