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) { }
Ma question est la suivante : est-ce que le passage d'un objet convertit l'objet de fermeture en objet d'origine
Je suis à /a/11... et je me demande pourquoi l'objet original peut être récupéré en passant ($this).
Prenons simplement le premier segment de code comme exemple.
Vous vous demandez pourquoi l'objet B transmis a complètement disparu une fois imprimé et transformé en objet A ?
Parce que même si tu
$a(new B());
了,但是匿名函数没接收啊,所以内部还是直接new A();
Exécutez ce code pour avoir une idée :
$b(new C()) Votre fonction anonyme $b n'accepte pas les paramètres