HOWTO · PHP
PHP 익명 클래스
이 튜토리얼은 PHP에서 익명 클래스를 만들고 사용하는 방법을 보여줍니다.
이 자습서는 PHP의 익명 클래스를 교육하고 다양한 코드 예제를 사용하여 이러한 클래스를 만들고 사용하는 방법을 보여줍니다. 또한 PHP에서 익명 클래스를 중첩하는 방법도 배웁니다.
PHP 익명 클래스
이름에서 알 수 있듯이 익명 클래스는 이름이 없는 클래스입니다. PHP 7은 익명 클래스의 기능을 도입했으며 이 클래스는 한 번만 사용할 수 있습니다.
익명 클래스는 해당 클래스의 개체 내부에 정의됩니다. 익명은 특성 확장, 구현 및 사용을 포함하여 일반 클래스가 수행하는 모든 작업을 수행할 수 있습니다. 익명 클래스의 구문은 다음과 같습니다.
$Anonymous_Object=new class {
// Your code here
}
익명 클래스에 대한 간단한 예를 살펴보겠습니다.
<?php
$Anonymous_Object=new class {
public function Print_Delftstack(){
echo "Hello, This is delftstack.com";
}
};
$Anonymous_Object->Print_Delftstack();
?>
위의 코드는 표준 클래스처럼 작동하며 익명 클래스에서 Print_Delftstack() 함수를 호출합니다. 출력 참조:
Hello, This is delftstack.com
익명 클래스가 클래스를 확장하고 인터페이스를 구현하는 또 다른 예를 살펴보겠습니다.
<?php
class Demo_Class{
public function Print_Delftstack1(){
echo "This is delftstack from a parent class.<br>";
}
}
interface Demo_Interface{
public function Print_Delftstack2();
}
$Anonymous_Object=new class() extends Demo_Class implements Demo_Interface {
public function Print_Delftstack2(){
echo "This is delftstack from the parent interface; the method is implemented from Demo_Interface.";
}
};
$Anonymous_Object->Print_Delftstack1();
$Anonymous_Object->Print_Delftstack2();
?>
위의 코드는 클래스를 확장하고 인터페이스를 구현한 다음 익명 클래스와 함께 해당 메서드를 사용합니다. 출력 참조:
This is delftstack from a parent class.
This is delftstack from the parent interface; the method is implemented from Demo_Interface.
익명 클래스가 어떻게 작동하는지 알 수 있듯이 클래스가 내부 사용에서 어떻게 익명으로 작동할 수 있습니까? 이에 대한 대답은 PHP가 익명 클래스에 고유한 이름을 부여하는 것입니다. 익명 클래스의 이름을 알아봅시다:
<?php
var_dump(get_class(new class() {
public function Print_Delftstack(){
echo "Hello, This is delftstack.com";
}
} ));
?>
위의 코드는 익명 클래스의 고유한 이름인 주어진 익명 클래스에 대한 정보를 덤프합니다. 출력을 참조하십시오.
string(46) "class@anonymousC:\Apache24\htdocs\new.php:2$5"
PHP의 중첩된 익명 클래스
익명은 다른 클래스의 메서드 본문 내부에 중첩될 수 있지만 외부 클래스의 protected 및 private 멤버에 액세스할 수 없습니다. 예를 들어 보겠습니다.
<?php
class Demo_Class{
public function Delftstack1(){
return new class(){
public function Delftstack2(){
echo "This is delftstack two methods from the nested anonymous class.";
}
};
}
}
$Demo_Object=new Demo_Class();
$Demo_Object->Delftstack1()->Delftstack2();
?>
위의 코드는 표준 클래스에 중첩된 익명 클래스를 구현하는 방법을 보여줍니다. 출력을 참조하십시오.
This is delftstack two methods from the nested anonymous class.