PHP 中的匿名类
本篇文章介绍 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