我正在使用Netbeans IDE,它在未声明的变量旁边显示警告 - 非常有用。
如果我在文件的顶部有这个
global $CFG;
然后警告因为变量已被声明而消失。
但这是好习惯吗?它们有什么优势吗?代码仍然没有声明。
注意:这适用于代码不在函数中的文件。
答案 0 :(得分:1)
在使用变量之前声明变量是一种好习惯。然而,在全球范围内将它们宣布为全球性是多余的。你可以做到
而不是做
global $CFG;
你可以做到
$CFG;
使用global
前缀声明它们的唯一时间是“有用的”是当你在函数内部执行它以从函数中访问全局范围变量时 - 但这通常是不好的做法,很少有情况下这是绝对必要的。
答案 1 :(得分:0)
不,如果您希望在其范围之外使用变量(例如在函数内),您可以在函数内传递它或将其全局化
function xoxo(){
global $var;
}
答案 2 :(得分:0)
有两件事让我警惕以这种方式“声明”变量。
首先,任何函数之外的大量代码可能意味着您的代码需要重新分解。在代码的顶层,您可能有一些行调用脚本或页面的主要操作,但是说您的声明“位于文件的顶部”表明存在的不仅仅是这个。
其次,在PHP中“声明”变量通常是赋予它某种初始值的同义词。例如,在构建模板参数列表(例如$params = array()
)之前设置$params['foo'] = get_foo()
。这样的初始化应始终保持与使用它的代码保持一致,这样如果你以后再重新考虑它,代码就会随之而来。
为什么总是初始化变量的一个例子是一个好主意,如果你最终将整个代码块放在某种循环中。在上面的情况中,如果我渲染多个模板并忘记初始化$params
,$params['foo']
最终可能会传递给每个模板。