class A{}
class B{}
$a = function (){
$a = new A();
var_dump($a);
return $a;
};
var_dump($a);
$b = $a(new B());
var_dump($b);
<strong>
输出:object(Closure)#1 (0) { }
object(A)#3 (0) { }
object(A)#3 (0) { }
</strong>
class A{}
class C{}
class B{
public function run(){
$b = function (){
return new A();
};
var_dump($b);
var_dump($this);
return $b(new C());
}
}
$b = new B();
var_dump($b->run());
输出:object(Closure)#2 (1) { ["this"]=> object(B)#1 (0) { } }
object(B)#1 (0) { }
object(A)#4 (0) { }
Soalan saya ialah, adakah melalui mana-mana objek menukar objek penutupan kepada objek asal. Mengapa ini berlaku?
Saya berada di /a/11... dan saya tertanya-tanya mengapa objek asal boleh diambil dengan memasukkan ($ini).
Ambil segmen kod pertama sebagai contoh.
Adakah anda tertanya-tanya mengapa objek B yang masuk hilang sepenuhnya apabila dicetak dan bertukar menjadi objek A?
Sebab walaupun awak
$a(new B());
了,但是匿名函数没接收啊,所以内部还是直接new A();
Laksanakan kod ini untuk merasainya:
$b(C() baharu) Fungsi tanpa nama anda $b tidak menerima parameter