PHP 匿名类

phpserver side programmingprogramming更新于 2025/7/19 0:52:17

简介

顾名思义,匿名类就是没有名称的类。它只供一次性使用,并且适用于需要动态定义类的情况。匿名类的特性从 PHP 7 版本开始引入。

匿名类的定义位于表达式内部,其结果为该类的对象。它使用如下的 new class语法定义。

语法

<?php
$obj=new class {
   public function sayhello(){
      echo "Hello World";
   }
};
$obj->sayhello();
?>

匿名类可以执行普通类的所有功能,例如扩展其他类、实现接口或使用特征

以下代码中,匿名类扩展了父类并实现了父接口

示例

<?php
class parentclass{
   public function test1(){
      echo "父类中的 test1 方法
";    } } interface parentinterface{    public function test2(); } $obj=new class() extends parentclass implements parentinterface {    public function test2(){       echo "从接口实现 test2 方法";    } }; $obj->test1(); $obj->test2(); ?>

输出

输出如下 −

父类中的 test1 方法
实现接口中的 test2 方法

嵌套匿名类

匿名类可以嵌套在其他类方法体内。但是,其对象无法访问外部类的私有或受保护成员

示例

<?php
class testclass{
   public function test1(){
      return new class(){
         public function test2(){
            echo "嵌套匿名类的 test2 方法";
         }
      };
   }
}
$obj2=new testclass();
$obj2->test1()->test2();
?>

输出

以上代码生成以下结果 −

嵌套匿名类的 test2 方法

匿名类的内部名称

PHP 解析器会为匿名类提供一个唯一名称以供内部使用

示例

<?php
var_dump(get_class(new class() {} ));
?>

输出

这将生成类似以下内容的输出 −

string(60) "class@anonymous/home/cg/root/1569997/main.php0x7f1ba68da026"

相关文章