네임스페이스 정의하기
네임스페이스 정의하기
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
네임스페이스 안에는 유효한 PHP 코드라면 무엇이든 넣을 수 있어요. 다만 네임스페이스의 영향을 받는 코드는 다음 유형뿐이에요: 클래스(추상 클래스, trait, enum 포함), 인터페이스, 함수, 상수.
네임스페이스는 namespace 키워드로 선언해요. 네임스페이스를 포함하는 파일은 다른 어떤 코드보다 먼저, 파일 맨 위에서 네임스페이스를 선언해야 해요 — 예외가 하나 있어요. 바로 declare 키워드죠.
예제 #1 단일 네임스페이스 선언
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
참고: 정규화된 이름(즉 백슬래시로 시작하는 이름)은 네임스페이스 선언에 쓸 수 없어요. 그런 구조는 상대 네임스페이스 표현식으로 해석되기 때문이죠.
네임스페이스 선언 앞에 올 수 있는 코드 구조는 declare 문뿐이에요. 소스 파일의 인코딩을 정의하기 위한 거죠. 게다가 공백을 포함해 어떤 비(非) PHP 코드도 네임스페이스 선언보다 먼저 올 수 없어요:
예제 #2 단일 네임스페이스 선언
<html>
<?php
namespace MyProject; // fatal error - namespace must be the first statement in the script
또한 다른 어떤 PHP 구조와 달리, 같은 네임스페이스를 여러 파일에 정의할 수 있어요. 그래서 네임스페이스의 내용을 파일시스템 위의 여러 파일로 나눠 담을 수 있죠.