PHP 7 特性之 匿名类

作者: 温新

分类: 【PHP基础】

阅读: 1322

时间: 2023-02-21 07:34:00

hi,我是温新,一名 PHPer

匿名类是 PHP 7 加入,匿名类和匿名方法让PHP成为了更现代化的语言,开发也更加便捷,本篇文章回顾一下匿名类。

什么是(Anonymous classes)匿名类

匿名类是一个不需要事先定义的类,在使用时直接定义。

匿名类的使用

1、简单使用

<?php
// 匿名类的定义与使用
$user = new class {
    public function getName()
    {
        echo '我叫王美美';
    }
};

$user->getName();

2、在函数中返回匿名类

<?php
// 函数返回匿名类对象
function get_user_name () {
    return new class {
        public function getName()
        {
            echo '我是王美丽';
        }
    };
}

get_user_name()->getName();

3、作为参数传递

<?php
    
$user = new class {
    public function getName()
    {
        echo '我叫王美美';
    }
};

function get_user_name ($user) {
    echo $user->getName();
}
get_user_name($user);

4、接口、继承、属性

4.1、无参数案例

<?php
    
// 人类接口
interface Human
{
    public function say():string;
}

// 王美丽父母接口
class MrWangParent implements Human
{
    public function say():string
    {
        return 'ha';
    }

    public function sing(): string
    {
        return '唱歌';
    }
}

// 王美丽
$wangMeiLi = new class extends MrWangParent implements Human {
    public function dance():string
    {
        return '跳舞';
    }
};
print_r($wangMeiLi->dance());

这个案例中,王美丽的家长实现了人类接口;然后生下了王美丽,王美丽继承了家长了会唱歌的基因,并且自己还有跳舞的天分。

4.2、传递参数与属性设置

<?php

// 创建匿名类并传递参数
$wangMeiLi = new class('快乐的跳舞') extends MrWangParent implements Human {

    const AGE = 19;
    
    public function __construct(public string $happy)
    {
    }

    public function dance():string
    {
        return  $this->happy . ' 跳舞';
    }
};
print_r($wangMeiLi->dance());
print_r($wangMeiLi::AGE);
请登录后再评论