私は最近、いくつかの OOP を独学で学ぼうとしており、奇妙に奇妙に思えるものに出くわしました。誰かが私にこれを説明できるかどうか疑問に思っていました。
このサイトの質問の 1 つに触発されて、この小さなテスト コードを (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();
シンプルなもの。は、4 に等しく 16に等しいオブジェクトをに$test1
戻す必要があります。コンストラクター関数は間違いなく実行されています-エコーしてコンストラクター関数に表示すると、それらが表示されます(正しい値で、それ以下ではありません)。しかし、 によって値が割り当てられているにもかかわらず、または を介して表示されません。誰かが私にこのちょっとした知的好奇心を説明できますか?$test2
$test2->foo
$test2->bar
$test2
test2
$foo
$bar
$test2
NULL
$foo
$bar
$test1->foo
var_dump
$test2->bar