PHP 7 그룹 use 선언이란?
PHP 7부터 도입된 그룹 use 선언(Group Use Declaration)은 동일한 네임스페이스에 속한 여러 클래스, 함수, 상수를 단 하나의 use 문으로 한 번에 가져올 수 있게 해주는 기능입니다. 이를 통해 코드가 훨씬 간결해지고 가독성도 크게 향상됩니다.
PHP 7의 그룹 use 선언은 크게 세 가지 유형으로 나눌 수 있습니다.
- 비혼합형 선언(Non-mixed-use declaration)
- 혼합형 선언(Mixed-use declaration)
- 복합형 선언(Compound use declaration)
1. 비혼합형 그룹 use 선언
비혼합형 선언은 클래스, 함수, 상수를 서로 다른 use 문으로 각각 따로 선언하는 방식입니다. 즉, 하나의 문장 안에 클래스와 함수, 상수를 섞어서 선언하지 않고 종류별로 분리해서 사용하는 경우를 말합니다.
예제
use Publishers\Packt\{ Book, Ebook, Video, Presentation };
use function Publishers\Packt\{ getBook, saveBook };
use const Publishers\Packt\{ COUNT, KEY };위 코드처럼 클래스는 일반 use 문으로, 함수는 function 키워드를, 상수는 const 키워드를 붙여 각각 그룹화하는 것이 특징입니다.
2. 혼합형 그룹 use 선언
혼합형 선언은 클래스, 함수, 상수를 하나의 use 문 안에 함께 결합하여 선언하는 방식입니다. 이때 함수와 상수는 반드시 function, const 키워드를 명시적으로 붙여 구분해야 합니다.
예제
use Publishers\Packt\
{
Book,
Ebook,
Video,
Presentation,
function getBook,
function saveBook,
const COUNT,
const KEY
};클래스, 함수, 상수가 모두 한 곳에 모여 있어 임포트 목록을 한눈에 파악하기 좋다는 장점이 있습니다.
3. 복합형 그룹 use 선언
복합형 선언은 더욱 고전적이면서도 명확한 방식으로, 특히 네임스페이스 이름이 긴 경우 불필요한 타이핑을 크게 줄여줍니다.
예를 들어 publishers\packet\paper 네임스페이스에 Book 클래스가 있고, publishers\packet\electronic 네임스페이스에는 Ebook 클래스가, publishers\packet\media 네임스페이스에는 Audio와 Presentation 클래스가 있다고 가정해 보겠습니다. 기존 방식으로는 다음과 같이 작성해야 합니다.
기존 방식
use Publishers\Packet\Paper\Book;
use Publishers\Packet\Electronic\Ebook;
use Publishers\Packet\Media\{Audio, Presentation};공통 접두사인 Publishers\Packet이 매번 반복되어 코드가 장황해집니다. 이제 같은 코드를 복합형 use 선언으로 다시 작성해 보겠습니다.
복합형 선언 적용
use Publishers\Packet\
{
Paper\Book,
Electronic\Ebook,
Media\Audio,
Media\Presentation
};공통 네임스페이스를 한 번만 선언하고 하위 경로만 나열하면 되므로 훨씬 깔끔하고 유지보수하기 쉬워집니다.
마무리
그룹 use 선언을 잘 활용하면 반복되는 네임스페이스 경로를 줄여 임포트 구문을 효율적으로 관리할 수 있습니다. 특히 규모가 큰 프로젝트에서 use 문이 많아질 때 그 효과가 두드러지므로, 상황에 맞는 유형(비혼합형·혼합형·복합형)을 선택해 적극적으로 활용해 보시기 바랍니다.