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


Should I declare global variables at the top of a PHP file?

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

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

global $CFG;

则警告消失,因为变量已被声明。

但这是好的做法吗?它们有什么优点吗?没有声明,代码仍然可以工作。

在使用变量之前声明它们是一个好习惯。不过,在全局作用域中将它们声明为全局是多余的。你可以直接输入

而不是做

global $CFG;

你可以直接写

$CFG;

global前缀声明它们的唯一时间是"有用的"是当你在函数内部访问全局作用域的变量时-但这通常是不好的做法,很少有这种情况是绝对必要的。

不,如果你想在它的作用域之外使用一个变量(例如在函数内部),你可以在函数内部传递它或将它全局化

function xoxo(){
   global $var;
}

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

首先,任何函数之外的大量代码可能意味着您的代码需要重构。在代码的顶层,你可能有少数几行调用脚本或页面的主要操作,但是说你的声明将"在文件的顶部"表明还有更多。

其次,在PHP中"声明"一个变量通常等同于给它一个初始值。例如,在构建模板参数列表(如$params['foo'] = get_foo())之前设置$params = array()。这样的初始化应该始终保持在使用它的代码附近,这样如果你以后重构它,代码就可以使用它。

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