我应该在PHP文件的顶部声明全局变量吗?

我应该在PHP文件的顶部声明全局变量吗?,php,global,Php,Global,我使用的是Netbeans IDE,它在未声明的变量旁边显示一个警告-非常有用 如果我把这个放在文件的顶部 global $CFG; 然后警告消失,因为变量已声明 但这是一种好的做法吗?有什么好处吗?代码在没有声明的情况下仍然有效 注意:这适用于在函数之外包含代码的文件。否,如果希望在其作用域之外(例如在函数内部)使用变量,可以在函数内部传递或全局化该变量 function xoxo(){ global $var; } 在使用变量之前声明变量是一种很好的做法。但是,在全局范围内将它们声

我使用的是Netbeans IDE,它在未声明的变量旁边显示一个警告-非常有用

如果我把这个放在文件的顶部

global $CFG;
然后警告消失,因为变量已声明

但这是一种好的做法吗?有什么好处吗?代码在没有声明的情况下仍然有效


注意:这适用于在函数之外包含代码的文件。

否,如果希望在其作用域之外(例如在函数内部)使用变量,可以在函数内部传递或全局化该变量

function xoxo(){
   global $var;
}

在使用变量之前声明变量是一种很好的做法。但是,在全局范围内将它们声明为全局是多余的。你可以这么做

而不是做

global$CFG

你可以这么做

$CFG


使用
global
前缀声明它们的唯一一次“有用”是在函数内执行此操作以从函数内访问全局范围的变量时-但这通常是不好的做法,在极少数情况下是绝对必要的

有两件事会让我对以这种方式“声明”变量感到警惕

首先,任何函数之外的大量代码可能意味着您的代码需要重新分解。在代码的顶层,您可能有一些行调用脚本或页面的主要操作,但如果说您的声明将放在“文件的顶部”,则表明还有更多内容

其次,在PHP中,“声明”变量通常与给它某种初始值同义。例如,在建立模板参数列表之前设置
$params=array()
,例如
$params['foo']=get_foo()
。这样的初始化应该始终保持在使用它的代码附近,这样,如果您以后重新考虑它,代码就会随之进行


为什么总是初始化变量是一个好主意的一个例子是,如果您最终将整个代码块放入某种循环中。在上面的例子中,如果我在呈现多个模板时忘记初始化
$params
$params['foo']
可能会被传递到每个模板。

好的做法是根本不使用全局变量-它们是纯粹的邪恶。这是一种糟糕的代码味道。你的代码很可能需要大幅度的改进。我认为人们可能误解了OP的意图……表面上看,他只是在全局范围内使用了一个变量,php给了他一个通知,因为它还没有首先定义Hanks chaps,我正在使用一个在全球范围内使用的开源系统,该系统将重命名为无名:)它恰好有一些关键的全局变量。我更喜欢声明以下代码中使用的所有变量,但这似乎不是这个特定系统的常见做法。我的问题是关于声明全局变量的实践,而不是应该使用它们。干杯。答案是永远不要使用globals,而是要正确地构造你的应用程序。从PHP5.1开始,
var
关键字就被弃用了。2@RogueCoder你说得对,更新了。
$CFG在php中毫无意义。当
$var
改变php的行为时,您能提供一个例子吗?