美文网首页
7.10 匿名类

7.10 匿名类

作者: 57fc17b7d598 | 来源:发表于2017-07-01 11:06 被阅读10次

匿名类和普通类一样,只是没有名字,它可以继承、实现接口、使用trait,以及拥有自己的成员属性。

如果外部类中的方法返回了一个匿名类,那么在这个匿名类中并不能访问到外部类的私有成员和受保护的成员。

如果要在匿名类中访问外部类中受保护的成员,可以通过继承外部类。

如果要在匿名类中访问外部类中私有成员,可以给匿名类的构造函数传值。

简单的定义方式:

// 通过变量定义
$myClass = new class{
    public function __construct(){
        echo __class__;
    }
};

// 输出:class@anonymousE:\wwwroot\php\index.php000001D83BB60076

更详细的描述:

// 抽象类
abstract class One{};
// 接口对象
interface Two{};
// Trait
trait Three{};
// 打印出一个匿名类的信息
var_dump(new class('我是构造函数的参数', '我是参数二号') extends One implements Two{
    use Three;
    public $name = "iGuoji";
    const AGE = 26;
    static $desc = "hello world";
    public function __construct(string ...$args){
        var_dump($args);
        echo "<br />";
    }
    public function say(){
        echo static::$desc;
    }
});

通过同一个函数创建的匿名类得到的对象,它们将会是同一个类的实例。

// 通过函数返回匿名类
function newClass(){
    return new class{};
}

// string(56) "class@anonymousE:\wwwroot\php\index.php000001D83BB6004F"
$c1 = newClass();
var_dump(get_class($c1));

// string(56) "class@anonymousE:\wwwroot\php\index.php000001D83BB6004F"
$c2 = newClass();
var_dump(get_class($c2));

相关文章

  • 7.10 匿名类

    匿名类和普通类一样,只是没有名字,它可以继承、实现接口、使用trait,以及拥有自己的成员属性。 如果外部类中的方...

  • 匿名类

    匿名类: 匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也...

  • 匿名类

    一.匿名类 /* 抽象类的匿名子类 */public class PersonTest { } class Wor...

  • 匿名类

    匿名类是一种即时继承现有类的方法。 例如,下面有一个类 Computer: class Computer { p...

  • java - 学习笔记

    日期 匿名类 lambda stringBuffer stringBuilder 定时 日期 匿名类 lambda...

  • 每日一点(1)

    匿名类 内部类 匿名内部类 匿名类(可以是接口 抽象类 普通类):1:无需创建对象2:直接重写方法 内部类:若一...

  • lambda 和 匿名内部类的区别 this

    this关键字 匿名类匿名类的this关键字指向匿名类 lambda表达式lambda表达式的this关键字指向包...

  • 2021-12-23 Spring中的ObjectFactory

    查看ObjectFactory的层次关系,发现有好几个匿名类: 这种匿名类也是子类(实现类)。

  • 匿名类,匿名内部类

    首先我们来看一下内部类的定义: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外...

  • 第十三章:匿名类

    PHP 7 开始支持匿名类。 匿名类很有用,可以创建一次性的简单对象。 可以传递参数到匿名类的构造器,也可以扩展(...

网友评论

      本文标题:7.10 匿名类

      本文链接:https://www.haomeiwen.com/subject/nkmwcxtx.html