类和外部类中的全局变量

时间:2014-03-01 12:21:52

标签: php variables global-variables

我很快就会解释一下:

class num
{
    function num1()
    {
        global $error;
        $error="This is an error message";
        return false;
    }

    function num2()
    {
        global $error;
        return $error;
    }
}

$num=new num();
$check=$num->num1();
if($check===false) $error.="There is another error message";

die($error);//This is an error messageThere is another error message
函数$error中的

num1会影响课堂外的$error。关于如何防止这种情况的任何建议?

1 个答案:

答案 0 :(得分:1)

您应该使用对象字段(属性):

class num
{
    protected $error;

    public function num1()
    {
        $this->error = "This is an error message";
        return false;
    }

    public function num2()
    {
        return $this->error;
    }
}

$num = new num();
$check = $num->num1();
if ($check===false) {
    // $error is just local variable, not defined before
    $error .= "There is another error message";

    // $objError is the error message from object
    $objError = $num->num2();
}

全局变量是反模式。 OO的一个原则是封装。您不希望公开$ error变量,除非有方法(契约)返回它。这正是您可以使用私有或受保护的属性。

我建议您阅读以下内容:http://www.php.net/manual/en/language.oop5.php

另外,请考虑beter类,方法和变量名。 num1num2是您可能选择的最差之一。但我明白这是一个例子。