2

在 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;
};

现在注意它是。

我很感激任何答案!提前感谢,杰伊

4

6 回答 6

4

在第二个示例中,您仍然没有声明变量,该行

$alert;

没有赋值$alert,所以它保持未声明。

如果您先声明变量,则可以更轻松地访问它而不会生成通知:

$alert = '';

if ($alert) {
    //do something with alert
}
于 2009-07-23T11:08:33.810 回答
2

在 PHP 中初始化全局变量是一种好习惯吗?

在我看来(而且我不是唯一一个这样认为的人)不使用全局变量是一种很好的做法。

你可以在这里找到几个论点。

但是,如果您确实需要使用全局变量,最好初始化它们;或用于isset确定它们是否存在。

于 2009-07-23T11:07:48.710 回答
1

好吧,使用一个没有被初始化的变量会在php中触发一个通知,所以初始化变量总是比不初始化好。

于 2009-07-23T11:07:18.260 回答
1

不要使用全局变量,这是一个不好的部分,并且在 PHP6 中不可用。如果您需要跨页面/类可用的值,为什么不创建一个枚举类?在此处查看示例:http ://riccardotacconi.blogspot.com/2009/05/enumerator-class-in-php.html

基本上你包括你的班级,你可以通过这种方式获得价值:QYourClass::Alert

于 2009-07-23T14:04:46.007 回答
0

我认为这是不可行的,所以我将其废弃。全局变量在 PHP6 和常量中被删除,根据定义不能改变它的值。感谢大家,我感谢每个答案和所有做出贡献的人。

于 2009-07-24T09:02:08.770 回答
0

根据this page,PHP6中没有取消全局变量,而是注册了全局变量。全局变量有很多用途(有些是好的做法,有些不是)并且基本上是安全的。 寄存器全局变量是一个严重的安全漏洞,已被正确弃用。

于 2011-02-23T15:16:20.223 回答