在PHP中初始化全局变量是一种好习惯吗?代码片段似乎工作得很好,但是在函数之外初始化(在一个更大的项目中,为了性能而言)变量更好,就像在第二个代码划痕中一样?
if(isset($_POST["Return"]))Validate();
function Validate(){
(!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
global $Alert;
$Alert="Lorem Ipsum";
mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
global $Alert;
$Alert="Dolor Sit"
};
function Alert(){
global $Alert;
if(!is_null($Alert))echo $Alert;
};
请注意,上面的变量$ Alert未初始化。
$Alert;
if(isset($_POST["Return"]))Validate();
function Validate(){
(!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
global $Alert;
$Alert="Lorem Ipsum";
mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
global $Alert;
$Alert="Dolor Sit"
};
function Alert(){
global $Alert;
if(!is_null($Alert))echo $Alert;
};
现在注意到它。
我感谢任何答案!在此先感谢Jay,
答案 0 :(得分:4)
在第二个例子中,你仍然没有声明变量,即行
$alert;
不会为$alert
分配一个值,因此它仍未声明。
如果您首先声明变量,则可以更轻松地访问变量而不会生成通知:
$alert = '';
if ($alert) {
//do something with alert
}
答案 1 :(得分:2)
初始化a是一种好习惯 PHP中的全局变量?
在我看来(而且我不是唯一一个想到的),不使用全局变量是一种好习惯。
您可以找到几个参数here。
如果你确实需要使用全局变量,那么初始化它们可能会更好;或使用isset
确定它们是否已存在。
答案 2 :(得分:1)
好吧,使用一个尚未初始化的变量会在php中触发通知,因此初始化变量总是比不初始化变量更好。
答案 3 :(得分:1)
不要使用全局变量,这是一个不好的例子,在PHP6中不可用。如果您需要跨页/类可用的值,为什么不创建枚举类?请在此处查看示例:http://riccardotacconi.blogspot.com/2009/05/enumerator-class-in-php.html
基本上你包括你的类,你就会以这种方式获得价值:QYourClass :: Alert
答案 4 :(得分:0)
根据this page全局变量在PHP6中没有被废除,而是注册全局变量。全局变量有许多用途(有些是好的做法,有些则不是),基本上是安全的。 Register globals是一个严重的安全漏洞,并且已经被弃用了。
答案 5 :(得分:-1)
我认为这不可行,所以我要废弃它。全局变量在PHP6中被删除,而Constant则根据定义不能更改它的值。感谢大家,我感谢每一个答案和所有贡献者。