实例
/**
* 匿名类的创建
* 匿名类只支持PHP7.0以上
* 匿名类也是利用new来直接调用
*/
//创建一个类
class BadPerson
{
private $name = '西门大官人';
public function story($name)
{
return $this->name.'喜欢上了'.$name.'
';
}
}
$BadPerson = new BadPerson();
echo $BadPerson->story('金莲妹妹');
//创建一个匿名对象
echo (new BadPerson())->story('莲花妹妹');
//创建一个匿名类
echo (new class
{
private $name = '西门大官人';
public function story($name)
{
return $this->name.'喜欢上了'.$name.'
';
}
})->story('水花妹妹');
//匿名类的三种应用场景
//1、在匿名类中可以使用构造方法
echo (new class ('欧阳克')//使用构造方法的时候,要传入参数,匿名类就在这里利用括号传入参数
{
private $name = '';
public function __construct($name)
{
$this->name = $name;
}
public function show($name)
{
return $this->name.'喜欢上了'.$name.'
';
}
})->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. '
'.
'动物的颜色是: ' .$this->color. '
'.
'动物的是: ' .$this->type. '
';
}
}
);
}
}
//在匿名类中访问dome2
echo (new Anmal())->dome1()->Demo2();
echo (new Anmal())->dome1()->show();
运行实例 »
点击 "运行实例" 按钮查看在线实例