php 闭包 作用,PHP: Closure::bindTo - Manual

Access private members of parent classes; playing with the scopes:

classParentsextendsGrandparents{ private$__status2='divorced'; }

classMeextendsParents{ private$__status3='single'; }$status1_3= function()

{$this->__status1='happy';$this->__status2='happy';$this->__status3='happy';

};$status1_2= function()

{$this->__status1='happy';$this->__status2='happy';

};// test 1:$c=$status1_3->bindTo($R= newMe,Parents::class);#$c();    // Fatal: Cannot access private property Me::$__status3

// test 2:$d=$status1_2->bindTo($R= newMe,Parents::class);$d();var_dump($R);/*

object(Me)#5 (4) {

["__status3":"Me":private]=>

string(6) "single"

["__status2":"Parents":private]=>

string(5) "happy"

["__status1":"Grandparents":private]=>

string(7) "married"

["__status1"]=>

string(5) "happy"

}

*/

// test 3:$e=$status1_3->bindTo($R= newMe,Grandparents::class);#$e(); // Fatal: Cannot access private property Me::$__status3

// test 4:$f=$status1_2->bindTo($R= newMe,Grandparents::class);$f();var_dump($R);/*

object(Me)#9 (4) {

["__status3":"Me":private]=>

string(6) "single"

["__status2":"Parents":private]=>

string(8) "divorced"

["__status1":"Grandparents":private]=>

string(5) "happy"

["__status2"]=>

string(5) "happy"

}

*/?>

Clear the stack trace:

useReflectionException;$c= function()

{$this->trace= [];

};$c=$c->bindTo($R= newReflectionException,Exception::class);$c();

try

{

throw$R;

}

catch(ReflectionException $R)

{var_dump($R->getTrace());

}/*

array(0) {

}

*/?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值