PHP - 为什么全局变量是邪恶的

时间:2018-01-06 06:08:41

标签: php variables concurrency request global

我知道这已经在这里多次讨论了,但我想进一步清楚地理解为什么使用全局变量是不好的做法。并发http请求会变得危险吗?如果这是代码:

<?php
    $variable1 = $_REQUEST['userinput'];
    sleep(3000);
    echo $variable1;
?>

如果有像user1,user2这样的用户..如果user1的输入是'request1'而user2的输入是传递给$ _REQUEST ['userinput']变量的'request2',那么发生请求的并发发送,将会回显$ variable1会显示为各个用户输入到浏览器的内容,还是会覆盖最后一个用户输入的第一个用户输入?为我写得不好的帖子和这个反复询问道歉。我只想清楚地了解全局变量。

2 个答案:

答案 0 :(得分:2)

全局变量可以被当前堆栈中运行的任何php访问和更改。有时它是由你没有编写的其他脚本,它们是框架的一部分或加载的代码库。

在许多文件中修改值时,很难调试代码。

在一个简单的并发请求示例中并不明显,这些请求都在不同的内存堆栈中运行,它在整个系统中可能会变得不可预测。

答案 1 :(得分:1)

我回答这个问题:

  

回显的$ variable1会显示为各个用户输入到浏览器的内容,还是会覆盖最后一个用户输入的第一个用户输入?

回显的$ variable1将显示为各个用户输入其浏览器的内容。

PHP为每个请求创建线程,因此不同的请求具有不同的变量(包括全局)。

我检查this post

正如JasonB所说, PHP全局变量具有非常广泛的范围,并使代码复杂。