我正在使用Netbeans IDE,它在未声明的变量旁边显示警告-非常有用。
如果我把这个放在文件的顶部
global $CFG;
则警告消失,因为变量已被声明。
但这是好的做法吗?它们有什么优点吗?没有声明,代码仍然可以工作。
在使用变量之前声明它们是一个好习惯。不过,在全局作用域中将它们声明为全局是多余的。你可以直接输入
而不是做
global $CFG;
你可以直接写
$CFG;
用global
前缀声明它们的唯一时间是"有用的"是当你在函数内部访问全局作用域的变量时-但这通常是不好的做法,很少有这种情况是绝对必要的。
不,如果你想在它的作用域之外使用一个变量(例如在函数内部),你可以在函数内部传递它或将它全局化
function xoxo(){
global $var;
}
有两件事会让我对以这种方式"声明"变量感到警惕。
首先,任何函数之外的大量代码可能意味着您的代码需要重构。在代码的顶层,你可能有少数几行调用脚本或页面的主要操作,但是说你的声明将"在文件的顶部"表明还有更多。
其次,在PHP中"声明"一个变量通常等同于给它一个初始值。例如,在构建模板参数列表(如$params['foo'] = get_foo()
)之前设置$params = array()
。这样的初始化应该始终保持在使用它的代码附近,这样如果你以后重构它,代码就可以使用它。
为什么总是初始化变量是一个好主意的一个例子是,如果你最终将整个代码块放入某种循环中。在上面的例子中,如果我渲染多个模板并且忘记初始化$params
,那么$params['foo']
最终可能会传递给每个模板。