zoukankan      html  css  js  c++  java
  • php闭包类外操作私有属性

    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
  • 相关阅读:
    几种网络LeNet、VGG Net、ResNet原理及PyTorch实现
    学习Faster R-CNN代码faster_rcnn(八)
    应用安全
    应用安全
    应用安全
    应用安全
    应用安全
    渗透测试
    应用安全
    应用安全
  • 原文地址:https://www.cnblogs.com/HKUI/p/8667072.html
Copyright © 2011-2022 走看看