最近我一直在尝试自学一些 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
和$bar
inside$test2
都是NULL
。构造函数肯定正在运行 - 如果我回显$foo
并$bar
在构造函数中显示它们(具有正确的值,不少于)。然而,尽管它们被 赋予了值,但$test1->foo
它们不会通过var_dump
或 通过显示$test2->bar
。有人可以向我解释一下这种求知欲吗?