PHP全局变量
name:initial vj name:vj name:vj name in file2: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;
?>
答案 0 :(得分:1)
全球并不意味着这些变量可供全世界的每个人使用。全局是指该会话中的所有对象。会话不会相互通信。如果他们这样做,那将是一场噩梦。
如果你有一个你需要共享的变量,你应该将它保存在数据库中,并且每个用户都会调用该变量来使用它。
答案 1 :(得分:1)
这个概念被称为&#34;应用范围。&#34; PHP更适合会话,请求或页面范围。要在PHP中的应用程序范围内放置数据,进行数据库调用以获取值时更常见。
我们可以使用$ _SESSION,$ _REQUEST或$ _POST和$ _GET这样的超级全局来将变量分配到会话,请求或页面范围内的一个页面之外。 PHP没有一个通用的,类似的方法来为应用程序范围内的变量赋值。相反,应用程序范围通常通过调用外部数据源(如数据库或文件)来模仿。早期版本的PHP具有一些倾向于应用范围概念的功能,但它们已被弃用。
对于你的问题:
我们经常将这种代码写为$ _SESSION变量,而不是一个用户为所有用户执行此操作,一次只能由一个用户使用。我们常常使用数据库写入和数据库读取来解决此类问题。只需记下编写它的用户的价值。为读者提供。
有一个名为$ GLOBALS的超全局,但它更像是一个用于注释变量命名方式的快捷方式。它不是将应用程序范围带入变量的功能。
JSP允许通过简单声明使用应用程序作用域变量。 ASP允许通过XML应用程序配置使用应用程序作用域变量。 PHP不会在变量,对象或类的上下文中直接使用应用程序范围。
php man scope php man reserved
答案 2 :(得分:0)
如果你重视自己的理智,不要使用全局变量。有一天,上帝禁止他们像你在想的那样。
是的,在index.php中声明的全局变量在file.php中可用。这就是问题的开始。假设全局变量的值有误,比如$ myGlobal。
这只是针对全局变量的一点。还有很多其他的。
如果事情就像你说的那样,如果一个全局变量可以被所有会话共享,那么这个混乱就会更大。感谢上帝和语言设计师,全球变量仅在会话范围内 。