Php 全局变量与全局声明变量

Php 全局变量与全局声明变量,php,include,global-variables,Php,Include,Global Variables,我的情况是,我需要存储每个访问者的IP地址,以便进行一些处理。我知道会话可以很好地完成这项工作,但我不希望这些数据存储在任何形式的cookie、会话或任何地方。我需要这个数据被销毁,一旦页面存在/关闭 因此,我的目的是创建一个global.php文件并将其存储在一个变量中,然后将该文件放在每个页面的顶部。(坏习惯,我知道) 现在,有两种方法可以将信息存储在此文件中。一个是使用global$var(这没有意义,因为它在任何地方都可以访问),另一个是现在只需初始化$variable,因为这个glob

我的情况是,我需要存储每个访问者的IP地址,以便进行一些处理。我知道会话可以很好地完成这项工作,但我不希望这些数据存储在任何形式的cookie、会话或任何地方。我需要这个数据被销毁,一旦页面存在/关闭

因此,我的目的是创建一个
global.php
文件并将其存储在一个变量中,然后将该文件放在每个页面的顶部。(坏习惯,我知道)

现在,有两种方法可以将信息存储在此文件中。一个是使用
global$var
(这没有意义,因为它在任何地方都可以访问),另一个是现在只需初始化
$variable
,因为这个
global.php
文件将添加到每个页面的顶部,这使得使用超级全局变量的优势变得微不足道

现在,如果你问我为什么不首先使用
global$var
,是因为我一直听说它们有多糟糕,应该避免使用它们

因此,在这种负面言论中,使用
global$var
的优势已经减弱,现在我看不出,在这种情况下使用什么更合适

简而言之
当您在一个文件中声明一个变量,并且在每个脚本中共享该文件时,无论您是按原样声明该变量还是使用
global
关键字声明该变量,都有什么区别(性能)。

幸运的是,PHP已经在每个函数都可以访问的超级全局数组中提供了用户的IP地址:

$_SERVER['REMOTE_ADDR']
您不必担心创建备用全局变量来存储此数据

也就是说,我认为您可能对包含
GLOBALS
的文件的作用有误解。脚本中初始化或修改的变量将在脚本完成后立即过期。。。只有当页面上的所有函数都可以访问它时,它才是全局的
global
$GLOBALS
变量仅存在于当前脚本(第页)的范围内。。如果希望在多个页面上共享变量,则必须使用会话或类似会话的方法(也就是说,必须从服务器文件系统或数据库存储和检索变量)

对问题编辑的答复 如果您只是关心读取变量和从全局数组中读取变量之间的性能差异,那么答案是“不用担心”-从技术上讲,读取全局数组的速度应该较慢,但在我所看到的关于该主题的所有基准测试中,即使在处理大量变量时,也没有实际的性能差异


如果你对为什么你总是听到人们咕哝着说globals不好很感兴趣,-基本上,在使用globals(特别是在大型复杂系统上)时,有几种不同的方式会让你陷入麻烦但这完全取决于具体情况。

我想你的意思是说没有
$\u GLOBAL
之类的东西?对不起,实际上我的意思是
GLOBAL$var
愚蠢的错误:)除非你计划有2000000个变量或类似的东西,否则我怀疑这有什么显著的区别。@lvaroG.Vicario谢谢。我只是想存储一两个值,那么使用
global
的负面情绪在这里有什么影响吗?我没有说得更好。我知道服务器变量,IP总是保存在
$\u服务器['REMOTE\u ADDR']
我想问的问题被添加到问题中,更加清晰