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