文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP 中的匿名类

2024-02-27 20:52

关注

本篇文章介绍 PHP 中的匿名类,并演示如何使用不同的代码示例创建和使用这些类。 我们还将学习如何在 PHP 中嵌套匿名类。


PHP 匿名类

顾名思义,匿名类 就是没有名字的类。 PHP 7 引入了匿名类的特性,这个类只能一次性使用。

匿名类在该类的对象内定义。 匿名类可以执行普通类将执行的任何操作,包括扩展、实现和使用特征; 匿名类的语法是:


$Anonymous_Object=new class {
// Your code here
}

让我们为匿名类尝试一个简单的例子:


<?php
$Anonymous_Object=new class {
    public function Print_Jiyik(){
        echo "Hello, This is jiyik.com";
    }
};
$Anonymous_Object->Print_Jiyik();
?>

上面的代码将像标准类一样工作,并从匿名类中调用函数 Print_Delftstack()。 查看输出:


Hello, This is jiyik.com

让我们尝试另一个示例,其中匿名类扩展一个类并实现一个接口:


<?php
class Demo_Class{
    public function Print_Jiyik1(){
        echo "This is jiyik from a parent class.<br>";
    }
}

interface Demo_Interface{
    public function Print_Jiyik2();
}

$Anonymous_Object=new class() extends Demo_Class implements Demo_Interface {
    public function Print_Jiyik2(){
        echo "This is jiyik from the parent interface; the method is implemented from Demo_Interface.";
    }
};

$Anonymous_Object->Print_Jiyik1();
$Anonymous_Object->Print_Jiyik2();
?>

上面的代码扩展了一个类并实现了一个接口,然后将它们的方法与匿名类一起使用。 查看输出:


This is jiyik from a parent class.
This is jiyik from the parent interface; the method is implemented from Demo_Interface.

我们可以看到匿名类是如何工作的,但是一个类如何在内部使用中匿名工作呢? 答案是 PHP 给匿名类一个唯一的名字; 让我们尝试获取匿名类的名称:


<?php
var_dump(get_class(new class() {
    public function Print_Jiyik(){
        echo "Hello, This is jiyik.com";
    }
} ));
?>

上面的代码会转储给定匿名类的信息,这是匿名类的唯一名称; 查看输出:


string(46) "class@anonymousC:\Apache24\htdocs\new.php:2$5" 

PHP 中的嵌套匿名类

匿名可以嵌套在另一个类的方法体内,但不能访问外部类的保护成员和私有成员。 让我们尝试一个例子:


<?php
class Demo_Class{
   public function Jiyik1(){
      return new class(){
         public function Jiyik2(){
            echo "This is jiyik two methods from the nested anonymous class.";
         }
      };
   }
}

$Demo_Object=new Demo_Class();
$Demo_Object->Jiyik1()->Jiyik2();
?>

上面的代码显示了如何实现嵌套到标准类的匿名类。 查看输出:


This is jiyik two methods from the nested anonymous class.
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯