php闭包类外操作私有属性

本文介绍了PHP中使用Closure类的bind和bindTo方法来操作对象属性的具体案例,包括获取和设置私有属性的值,并展示了如何将闭包绑定到不同实例上。

Closure::bind()

Closure::bindTo();

class person{
    private $age;
    private $sex;
    public function __construct($age,$sex){
        $this->age=$age;
        $this->sex=$sex;
    }
    public function getage(){
        return $this->age;
    }
    public function getclosure(){
        return function() {
                return $this->age . "-->" . $this->sex;
            };

    }

}
$tom=new person(18,1);

$lucy=new person(16,2);


$set=Closure::bind(function($obj,$k,$v){
    $obj->$k=$v;
},null,person::class);

$get=Closure::bind(function($obj,$k){
    return $obj->$k;
},null,person::class);

$get_tom_age=Closure::bind(function() use($tom){
    return $tom->age;
},null,person::class);

echo $get_tom_age();//18



echo $get($tom,'age');//18
$set($tom,'age',20);
echo $get($tom,'age');//20



$c1=$tom->getclosure();
echo $c1();//20-->1
$c1=$c1->bindTo($lucy);

echo $c1();//16-->2

 

转载于:https://www.cnblogs.com/HKUI/p/8667072.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值