Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 7 익명 클래스(Anonymous Class)란? 개념부터 예제까지

PHP 7에서는 new class 구문을 사용하여 익명 클래스(Anonymous Class)를 정의할 수 있습니다. 익명 클래스는 이름 없이 즉석에서 객체를 생성하는 기능으로, 별도의 전체 클래스 정의를 대체하여 활용할 수도 있습니다. 그렇다면 익명 클래스는 왜, 언제 사용하는 것이 좋을까요?

익명 클래스를 사용하는 이유

  • 테스트 코드 작성 시 목(Mock) 객체를 손쉽게 만들 수 있습니다.
  • 인터페이스에 대한 동적인 구현을 간편하게 생성할 수 있어, 복잡한 목킹(Mocking) API를 사용하지 않아도 됩니다.
  • 클래스가 정의된 범위(Scope) 안에 직접 배치할 수 있어 코드의 응집도가 높아집니다.
  • 간단한 일회성 구현을 위해 굳이 오토로더(Autoloader)를 통해 별도의 클래스 파일을 불러올 필요가 없습니다.

사용 예제

다음은 PHP 7에서 익명 클래스를 활용한 코드 샘플입니다.

<?php
interface a_logger {
    public function log(string $msg);
}
class App {
    private $logger;
    public function getLogger(): a_logger {
        return $this->logger;
    }
    public function setLogger(a_logger $logger) {
        $this->logger = $logger;
    }
}
$app = new App;
$app->setLogger(new class implements a_logger {
    public function log(string $msg) {
        print($msg);
    }
});
$app->getLogger()->log("This has created an anonymous class");
?>

위 예제에서 a_logger 인터페이스를 구현하는 익명 클래스가 setLogger() 메서드에 전달되는 순간 즉시 생성됩니다. 이처럼 로거(Logger)처럼 가볍고 단순한 구현체가 필요한 상황에서 익명 클래스를 활용하면, 별도의 파일을 만들거나 네임스페이스를 관리할 필요 없이 깔끔하게 코드를 작성할 수 있습니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

This has created an anonymous class