本文共 985 字,大约阅读时间需要 3 分钟。
PHP从7开始支持匿名类,通常匿名类用来创建一次性的简单对象,匿名类可以继承其他类、实现接口、使用trait,还可以向其构造函数传递参数。
fa(); $obj->fb(); $obj->fc();}test(new class("anonymous") extends A implements B{ use C; private $var; public function __construct($arg){ $this->var=$arg; } public function fb(){ echo "b\n"; echo $this->showProperty(); } function showProperty(){ echo "var=$this->var\n"; } });?>
匿名类被嵌套进普通Class后,不能访问这个外部类的 private、protected方法或者属性。通过继承这个外部类可以访问外部类protected的属性和方法,通过构造参数将private属性传递进匿名类就可以使用外部类的private属性了。声明的同一个匿名类,所创建的对象都是这个类的实例。
var2) extends Outer{ private $var3; public function __construct($arg) { $this->var3 = $arg; } function foo2(){ $this->foo(); echo "$this->var,$this->var3\n"; } }; }}(new Outer)->getInner()->foo2();var_dump(get_class((new Outer)->getInner())===get_class((new Outer)->getInner()));?>
转载地址:http://sykkb.baihongyu.com/