实例
<?php /** * 匿名类的创建 * 匿名类只支持PHP7.0以上 * 匿名类也是利用new来直接调用 */ //创建一个类 class BadPerson { private $name = '西门大官人'; public function story($name) { return $this->name.'喜欢上了<span style="color: red">'.$name.'</span><hr>'; } } $BadPerson = new BadPerson(); echo $BadPerson->story('金莲妹妹'); //创建一个匿名对象 echo (new BadPerson())->story('莲花妹妹'); //创建一个匿名类 echo (new class { private $name = '西门大官人'; public function story($name) { return $this->name.'喜欢上了<span style="color: red">'.$name.'</span><hr>'; } })->story('水花妹妹'); //匿名类的三种应用场景 //1、在匿名类中可以使用构造方法 echo (new class ('欧阳克')//使用构造方法的时候,要传入参数,匿名类就在这里利用括号传入参数 { private $name = ''; public function __construct($name) { $this->name = $name; } public function show($name) { return $this->name.'喜欢上了<span style="color: red">'.$name.'</span><hr>'; } })->show('小龙女'); //在匿名类中可以继承其它成员 //要在匿名类中继承成员,首先我们要创建一个类 class KungFu { protected $kill = ''; public function __construct($sta='') { $this->kill = $sta; } public function show() { return $this->kill ? $this->kill : '黯然销魂撑'; } } //在上面中已经创建了一个类,下面我们利用匿名类来继承类 echo (new class('西门大官人','玉女剑法') extends KungFu { private $name; public function __construct($name='',$sta='')//如果$name为空,就可以不传,如果就必须要传值。 { parent::__construct($sta); $this->name = $name; } public function story($name) { return $this->name.'喜欢上了'.$name; } public function show() { return $this->name.'绝招是:'.parent::show(); } } )->show(); //可以在声明的类中嵌套一个匿名类 class Anmal { public $dog = '狗'; protected $color = '白色'; private $type = '哈士奇'; protected function info() { return '售价2000元'; } public function dome1() { return (new class ($this->type) extends Anmal { private $type; public function __construct($name) { $this->type = $name; } public function Demo2() { return '我是嵌套匿名类中的方法'.__METHOD__; } public function show() { return '动物的名称是: ' .$this->dog. '<br>'. '动物的颜色是: ' .$this->color. '<br>'. '动物的是: ' .$this->type. '<br>'; } } ); } } //在匿名类中访问dome2 echo (new Anmal())->dome1()->Demo2(); echo (new Anmal())->dome1()->show();
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:在使用匿名类中,类中嵌套匿名类,这个不是很懂,以后还要加大学习一下。