php怎么实现匿名评论,PHP-匿名对象与匿名类的实现过程-0905

* 匿名类:

* 1. php 7.0+ 才支持

* 2. 类似于匿名函数,就是没有名称的类

* 3. 匿名类适合于一次性的创建与引用

* 4. 匿名类总是与: new 配套使用

类的三种访问方式

实例

/**

* 匿名类:

* 1. php 7.0+ 才支持

* 2. 类似于匿名函数,就是没有名称的类

* 3. 匿名类适合于一次性的创建与引用

* 4. 匿名类总是与: new 配套使用

*/

class Lei //定义一个类

{

private $name = '我'; //声明一个私有属性

public function story($name)  //使用一个方法

{

return $this->name.'喜欢: '.$name.'';  //返回XX喜欢XX

}

}

//有三种方式来访问 story方法

//1、实例化一个对象  echo输出

$Lei = new Lei();

echo $Lei->story('篮球').'


';//我喜欢篮球

//2、匿名对象

echo (new Lei())->story('足球').'


';//我喜欢足球

//3、匿名类 只有php 7.0+ 才支持

echo (new class{

private $name = '我'; //声明一个私有属性

public function story($name)  //使用一个方法

{

return $this->name.'喜欢: '.$name.'';  //返回XX喜欢XX

}

})->story('乒乓球').'


';

运行实例 »

点击 "运行实例" 按钮查看在线实例

匿名类的三种场景

实例

echo '

匿名类的三种应用场景

';

echo '

1、匿名类中的构造方法

';

echo (new class('小明'){

private $name;

//匿名类中的构造方法

public function __construct($name){

$this->name=$name;

}

public function story($name){

return $this->name.'喜欢: '.$name.'';

}

})->story('篮球').'


';

echo '

2、在匿名类中可以继承其它类中的成员

';

class Friend{

protected $girl;

public function __construct($job='')

{

$this->girl = $job;

}

public function show()

{

return $this->girl ? : '文员';

}

}

echo (new class('小红','作家') extends Friend{

private $name;

public function __construct($name,$job='')

{

parent::__construct($job);

$this->name = $name;

}

public function story($name)

{

return $this->name.'喜欢上了: '.$name.'';

}

public function show()

{

return $this->name.'的工作是: '.''.parent::show().'';

}

})->show(). '


';

echo '

3.可以在类声明中嵌套一个匿名类

';

class Anmal   // 宿主类, 父类的角色

{

public $name = '狗';

protected $color = '黑色';

private $type = '哈士奇';

protected function info ()

{

return '市1场售价3000元';

}

public function demo1()

{

// 宿主类中的私有成员不能在匿名类中直接使用

// 可以通过在匿名类创建一个构造方法将宿主类中的私有成员进行注入

// 3. 将宿主类中的私有属性做为匿名类的构造方法的参数传入即可

return (new class ($this->type) extends Anmal {

//1. 在匿名类中创建一个属性用来接收宿主类中的私有属性

private $type;

//2. 创建一个构造方法

public function __construct($type)

{

$this->type = $type;

}

public function demo2()

{

return '我是嵌套匿名类中的方法: '. __METHOD__;

}

public function show()

{

return

'动物的名称是: ' .$this->name. '
'.//可以访问

'动物的颜色是: ' .$this->color. '
'.//可以访问

'动物的品1种是: ' .$this->type. '
';

}

});

}

}

// 访问匿名类中的 demo2()

echo (new Anmal())->demo1()->demo2();

echo '


';

echo (new Anmal())->demo1()->show();

运行实例 »

点击 "运行实例" 按钮查看在线实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值