Maison > Questions et réponses > le corps du texte
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).
ringa_lee2017-05-16 12:04:57
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 :
<?php
class A{}
class B{}
$a = function ($unknow = null){ //这里要接收的
var_dump($unknow);
return $unknow;
};
var_dump($a);
$b = $a(new B());
var_dump($b);
世界只因有你2017-05-16 12:04:57
class A{}
class C{}
class B{
public function run(){
$b = function (){
var_dump(func_get_args()); //接收参数
return new A();
};
var_dump($b); //第一次输出 $b 闭包
var_dump($this); //第二次输出 $this。 就是class B
return $b(new C());
}
}
$b = new B();
var_dump($b->run()); //第三次输出 是$b这个匿名函数的返回值 class A
$b(new C()) Votre fonction anonyme $b n'accepte pas les paramètres