PHP 7의 익명 클래스란?
PHP 7 버전부터 익명 클래스(Anonymous Class) 기능이 도입되었습니다. PHP에서 모든 객체는 반드시 어떤 클래스와 연결되어 있는데, 익명 클래스는 이름 없이 정의되는 클래스로, 필요한 시점에 바로 인스턴스화하여 객체를 생성할 수 있습니다.
익명 클래스는 한 번만 사용할 간단한 객체가 필요하거나, 별도의 클래스 파일을 만들기 애매한 상황에서 코드를 깔끔하게 유지하는 데 유용합니다.
예제 코드
<?php
class my_sample_class {}
$obj = new class extends my_sample_class {};
echo "인스턴스가 부모 클래스에 속하나요? = ";
echo var_dump($obj instanceof my_sample_class);
?>
실행 결과
인스턴스가 부모 클래스에 속하나요? = bool(true)
코드 설명
위 예제에서는 먼저 부모 클래스인 my_sample_class를 선언했습니다. 그다음 new class extends my_sample_class 구문을 통해 부모 클래스를 상속받는 익명 클래스를 즉석에서 정의하고, 그 인스턴스를 $obj 변수에 할당했습니다.
이후 instanceof 연산자를 사용해 해당 인스턴스가 부모 클래스에 속하는지 검사합니다. 익명 클래스가 부모 클래스를 확장(extends)했기 때문에 결과는 true로 출력됩니다.
익명 클래스의 주요 활용 사례
- 일회성 객체: 테스트 코드나 임시 로직처럼 재사용할 필요가 없는 객체를 빠르게 생성할 때 적합합니다.
- 코드 간소화: 단순한 용도를 위해 별도의 클래스 파일을 만들지 않아도 되므로 프로젝트 구조가 깔끔해집니다.
- 인터페이스 구현: 특정 메서드에 인터페이스 구현체를 인자로 전달해야 할 때 인라인으로 정의하여 활용할 수 있습니다.
정리
익명 클래스는 일반 클래스와 동일하게 상속, 인터페이스 구현, 생성자 호출 등 모든 기능을 지원합니다. 다만 이름이 없기 때문에 여러 곳에서 재사용해야 하는 경우라면 일반 클래스로 정의하는 것이 좋습니다. PHP 7 이상 환경에서 간결하고 유연한 객체 지향 코드를 작성하고 싶다면 익명 클래스를 적극적으로 활용해 보세요.