我很快就会解释一下:
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
。关于如何防止这种情况的任何建议?
答案 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类,方法和变量名。 num1
和num2
是您可能选择的最差之一。但我明白这是一个例子。