PHP - 为什么全局变量是邪恶的
PHP - why global variables are evil
我知道这已经在这里讨论过多次,但我想进一步清楚地理解为什么使用全局变量是不好的做法。并发 http 请求会变得危险吗?如果这是代码:
<?php
$variable1 = $_REQUEST['userinput'];
sleep(3000);
echo $variable1;
?>
如果有像 user1,user2 这样的用户.. 如果 user1 的输入是 'request1' 并且 user2 的输入是 'request2' 传递给 $_REQUEST['userinput'] 变量,然后并发发生请求发送时,回显的 $variable1 是否会显示为各个用户在其浏览器中输入的内容,还是会用最后一个用户的输入覆盖第一个用户的输入?为我写得不好的 post 和重复的询问道歉。我只是想清楚地了解全局变量。
全局变量可以被当前堆栈中 运行ning 中的任何 php 访问和更改。有时是通过您没有编写的其他脚本,这些脚本是框架的一部分或加载的代码库。
当许多文件中的值可以修改时,调试代码非常困难。
在一个简单的并发请求示例中并不明显,这些请求全部 运行 在不同的内存堆栈中,它在整个系统中全局变量可能变得不可预测。
我回答这个问题:
will the echoed $variable1 be displayed as what the respective users have input to their browser or it will override the first user's input by the last user's input?
回显的 $variable1 将显示为相应用户在其浏览器中输入的内容。
PHP 每个请求创建一个线程,所以不同的请求有不同的变量(包括全局变量)。
我检查this post。
正如 JasonB 所说,
PHP 全局变量的范围很广,代码也很复杂。
我知道这已经在这里讨论过多次,但我想进一步清楚地理解为什么使用全局变量是不好的做法。并发 http 请求会变得危险吗?如果这是代码:
<?php
$variable1 = $_REQUEST['userinput'];
sleep(3000);
echo $variable1;
?>
如果有像 user1,user2 这样的用户.. 如果 user1 的输入是 'request1' 并且 user2 的输入是 'request2' 传递给 $_REQUEST['userinput'] 变量,然后并发发生请求发送时,回显的 $variable1 是否会显示为各个用户在其浏览器中输入的内容,还是会用最后一个用户的输入覆盖第一个用户的输入?为我写得不好的 post 和重复的询问道歉。我只是想清楚地了解全局变量。
全局变量可以被当前堆栈中 运行ning 中的任何 php 访问和更改。有时是通过您没有编写的其他脚本,这些脚本是框架的一部分或加载的代码库。
当许多文件中的值可以修改时,调试代码非常困难。
在一个简单的并发请求示例中并不明显,这些请求全部 运行 在不同的内存堆栈中,它在整个系统中全局变量可能变得不可预测。
我回答这个问题:
will the echoed $variable1 be displayed as what the respective users have input to their browser or it will override the first user's input by the last user's input?
回显的 $variable1 将显示为相应用户在其浏览器中输入的内容。
PHP 每个请求创建一个线程,所以不同的请求有不同的变量(包括全局变量)。
我检查this post。
正如 JasonB 所说, PHP 全局变量的范围很广,代码也很复杂。