PHP7匿名类的用法示例

1. 简介

PHP7中引入了匿名类,可以快速便捷地创建类。一般情况下,定义一个类需要使用class关键字,并且需要命名,而匿名类不需要命名,可以在定义时指定它的父类和接口。

2. 基本语法

匿名类的基本语法如下:

$anonymousClass = new class() extends MyBaseClass implements MyInterface {

// class definition

};

2.1 继承父类

匿名类可以继承自一个父类,如下:

class MyBaseClass {

public function myMethod() {

echo 'MyBaseClass';

}

}

$anonymousClass = new class() extends MyBaseClass {

public function myMethod() {

echo 'AnonymousClass';

}

};

$anonymousClass->myMethod(); // 输出 AnonymousClass

在定义匿名类时,使用extends关键字指定它的父类。

2.2 实现接口

匿名类也可以实现接口,如下:

interface MyInterface {

public function myMethod();

}

$anonymousClass = new class() implements MyInterface {

public function myMethod() {

echo 'AnonymousClass';

}

};

$anonymousClass->myMethod(); // 输出 AnonymousClass

在定义匿名类时,使用implements关键字指定它的接口。

3. 示例

下面通过一个示例来演示匿名类的用法。

interface Animal {

public function speak(): string;

}

class Dog implements Animal {

public function speak(): string {

return 'Woof!';

}

}

class Cat implements Animal {

public function speak(): string {

return 'Meow!';

}

}

$animals = [

new Dog(),

new Cat(),

new class implements Animal {

public function speak(): string {

return 'Moo!';

}

}

];

foreach ($animals as $animal) {

echo $animal->speak() . ' ';

}

在上面的示例中,定义了一个接口Animal,包含了一个方法speak。然后,定义了两个实现了Animal接口的类,分别是Dog和Cat。最后,使用匿名类创建了一个新的Animal实现,在foreach循环中遍历每一个Animal实现,调用speak方法并输出结果。这个匿名类没有实现任何额外的方法或属性,只是简单地重写了speak方法以返回'Moo!'。

4. 总结

匿名类是PHP7中的一个新特性,通过它可以快速便捷地创建类,并继承父类或实现接口。通过本文的介绍,大家应该能够可以灵活地使用匿名类了。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签