博客列表 >php匿名类的创建与使用方法_2018年9月5日

php匿名类的创建与使用方法_2018年9月5日

PHP学习
PHP学习原创
2018年09月11日 21:22:37987浏览

实例

<?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();

运行实例 »

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

总结:在使用匿名类中,类中嵌套匿名类,这个不是很懂,以后还要加大学习一下。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议