对处理类之间的变量感到困惑



我有这样的类:

class sqlClass    {
var $myvar = "test value 1"
public function test01() {
global $myvar;
//some operations here
$myvar = "test value 2"
return true;
}
}

在其他文件中,我有这个PHP脚本:

include_once('functions.php'); // where my class is
$data = new sqlClass();
if ($data->test01()) {
echo $data->myvar;
} else { echo "No value"; }

在这个例子中,test01()总是正确的,所以我可以保证$myvar会发生变化,但是,当我在应该更改其值的类中执行函数后打印$myvar时,它会打印旧值"测试值 1"而不是"测试值 2"。那么,我错过了什么?

好的,首先你不应该使用var关键字。这是 php4,除非您维护旧版应用程序,否则您不应该使用它。相反,您可以使用可见性关键字之一 -publicprotectedprivate

其次,你不应该在类中使用global不应该有需要。 要访问您使用的类成员$this->memberName如果您需要访问类外部的变量,则应将这些变量作为参数传递给您的方法或构造函数。

因此,考虑到所有这些,这就是您的代码应该的样子:

class sqlClass    {
public $myvar = "test value 1";
public function test01() {
//some operations here
$this->myvar = "test value 2"
return true;
}
}

话虽如此,我会阅读 php5 手册中关于 OOP 的整个部分

要更改对象的实例变量,请使用$this->

class sqlClass {
public $myvar = "test value 1"
public function test01() {
$this->myvar = "test value 2"
return true;
}
}

这将更改变量$data->myvar。你用global做什么意味着它正在改变全局变量myvar,你用echo $myvar输出。它与对象无关$data.

最新更新