1

最近我一直在尝试自学一些 OOP,但我遇到了一些对我来说似乎很奇怪的东西。我想知道是否有人可以向我解释这一点。

我受到这个网站上的一个问题的启发,尝试了这段小测试代码(用 PHP 编写):

class test1 {
    function foo ($x = 2, $y = 3) {
    return new test2($x, $y);
    }
}

class test2 {
    public $foo;
    public $bar;
    function __construct ($x, $y) {
        $foo = $x;
        $bar = $y;
    }
    function bar () {
        echo $foo, $bar;
    }
}

$test1 = new test1;
$test2 = $test1->foo('4', '16');
var_dump($test2);
$test2->bar();

简单的东西。$test1应该返回一个对象到$test2$test2->foo等于 4 和$test2->bar等于 16。我的问题是,当$test2被制作成 class 的对象时test2,两者$foo$barinside$test2都是NULL。构造函数肯定正在运行 - 如果我回显$foo$bar在构造函数中显示它们(具有正确的值,不少于)。然而,尽管它们被 赋予了值,但$test1->foo它们不会通过var_dump或 通过显示$test2->bar。有人可以向我解释一下这种求知欲吗?

4

2 回答 2

5

您的语法错误,应该是:

class test2 {
    public $foo;
    public $bar;
    function __construct ($x, $y) {
        $this->foo = $x;
        $this->bar = $y;
    }
    function bar () {
        echo $this->foo, $this->bar;
    }
}
于 2012-07-18T21:27:53.267 回答
2

您应该使用“this”访问您的班级成员:

function __construct ($x, $y) {
    $this->foo = $x;
    $this->bar = $y;
}
于 2012-07-18T21:28:05.683 回答