개요
PHP에서는 확장자가 .php인 단일 파일 안에 둘 이상의 네임스페이스(namespace)를 정의할 수 있습니다. 이를 위해 공식적으로 두 가지 문법이 제공되는데, 바로 조합(combination) 문법과 중괄호(bracketed) 문법입니다.
조합 문법으로 여러 네임스페이스 정의하기
조합 문법에서는 네임스페이스를 위아래로 연달아 선언합니다. 첫 번째 네임스페이스에 속한 코드는 두 번째 네임스페이스 정의가 시작되기 전까지 유효합니다. 특정 네임스페이스를 현재 네임스페이스로 전환하려면 use 키워드를 사용합니다.
예제
<?php
namespace myspace1;
function hello() {
echo "Hello World from space1\n";
}
echo "myspace1 : ";
hello();
namespace myspace\space2;
function hello(){
echo "Hello World from space2\n";
}
echo "myspace2 : ";
hello();
use myspace1;
hello();
use myspace\space2;
hello();
?>실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
myspace1 : Hello World from space1 myspace2 : Hello World from space2 Hello World from space2 Hello World from space2
중괄호 문법으로 여러 네임스페이스 정의하기
다음 예제에서는 중괄호({ })로 각 네임스페이스의 적용 범위를 명확히 구분하여 두 개의 네임스페이스를 정의합니다.
예제
<?php
namespace myspace1 {
function hello() {
echo "Hello World from space1\n";
}
echo "myspace1 : ";
hello();
}
namespace myspace\space2 {
function hello(){
echo "Hello World from space2\n";
}
echo "myspace2 : ";
hello();
}
?>실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
myspace1 : Hello World from space1 myspace2 : Hello World from space2
주의 사항 및 권장 사항
여러 네임스페이스를 정의할 때는 조합 문법보다 중괄호 문법이 권장됩니다. 중괄호 문법 사용 시 다음 사항을 반드시 기억해야 합니다.
- 중괄호 문법과 비중괄호(조합) 문법은 혼용할 수 없습니다.
- 네임스페이스 중괄호 외부에는
declare문을 제외한 어떠한 PHP 코드도 존재할 수 없습니다. - 전역 네임스페이스와 이름이 지정된 네임스페이스를 함께 사용해야 하는 경우에는 중괄호 문법만 허용됩니다.