PHP7之匿名类

匿名类可以创建一次性的简单对象

如下代码所示:

";

class Animal{
    
    public $num;
    public function __construct($key){
        $this->num = $key;
    }
    
    public function getValue($sum):int{
        return $this->num+$sum;
    }
}
$animal = new Animal(5);
echo $animal->getValue(10);

echo "
"; /****************************匿名类***********************/ echo "这是匿名类
"; echo (new class(5) extends Animal{})->getValue(90); echo "
"; echo (new class(5) extends Animal{})->getValue(100); ?>

输出如下

PHP7之匿名类_第1张图片
Paste_Image.png
匿名类被嵌套进普通类后,不能访问这个 外部类的 私有(private)、受保护(protected)方法或属性。但如果想访问protected方法或属性,可以 继承(extends)这个外部类,想访问这个 私有(private)方法或属性,可以通过构造器,如下代码所示:
num) extends Animal{
            protected $id;
            
            public function __construct($sum){
                $this->id = $sum;
            }
            
            public function eat(){
                return $this->id+$this->age+$this->bark();
            }
        };
    }
}

echo (new Animal)->drive()->eat();
?>

以上代码输出 13

匿名类的闭包实现,如下
$test = array();
for($i=0; $i<6; $i++){
    
    $test[] = new class($i){
         
        public $age;
        
        public function __construct($num){
            $this->age = $num;
        }
        
        public function getValue(){
            return $this->age;
        }
    };
}
echo $test[0]->getValue();
echo "
"; var_dump($test[2]);

如下显示

PHP7之匿名类_第2张图片
Paste_Image.png

你可能感兴趣的:(PHP7之匿名类)