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

时间:2013-03-10 22:56:39

标签: php global

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

如果我在文件的顶部有这个

global $CFG;

然后警告因为变量已被声明而消失。

但这是好习惯吗?它们有什么优势吗?代码仍然没有声明。

注意:这适用于代码不在函数中的文件。

3 个答案:

答案 0 :(得分:1)

在使用变量之前声明变量是一种好习惯。然而,在全球范围内将它们宣布为全球性是多余的。你可以做到

而不是做

global $CFG;

你可以做到

$CFG;

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

答案 1 :(得分:0)

不,如果您希望在其范围之外使用变量(例如在函数内),您可以在函数内传递它或将其全局化

function xoxo(){
   global $var;
}

答案 2 :(得分:0)

有两件事让我警惕以这种方式“声明”变量。

首先,任何函数之外的大量代码可能意味着您的代码需要重新分解。在代码的顶层,您可能有一些行调用脚本或页面的主要操作,但是说您的声明“位于文件的顶部”表明存在的不仅仅是这个。

其次,在PHP中“声明”变量通常是赋予它某种初始值的同义词。例如,在构建模板参数列表(例如$params = array())之前设置$params['foo'] = get_foo()。这样的初始化应始终保持与使用它的代码保持一致,这样如果你以后再重新考虑它,代码就会随之而来。

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