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

PHP 네임스페이스 사용법: 현재·상대·완전 한정 이름 완벽 정리

소개

PHP에서 네임스페이스(namespace)에 속한 클래스, 함수 또는 상수는 다음과 같은 세 가지 방식으로 사용할 수 있습니다.

  • 현재 네임스페이스의 클래스, 함수, 상수 직접 사용
  • 현재 네임스페이스를 기준으로 하는 상대적(relative) 네임스페이스 지정
  • 루트부터 전체 경로를 명시하는 완전 한정 이름(fully qualified name) 사용

1. 현재 네임스페이스의 요소 사용하기

아래 예제에서는 test1.php 파일에 정의된 네임스페이스를 불러와 사용합니다. 네임스페이스 접두사 없이 함수나 클래스 이름만 호출하면 현재 네임스페이스에 정의된 요소에 접근하게 됩니다.

test1.php 예제

#test1.php
<?php
namespace myspace\space1;
const MAX = 100;
function hello() {echo "hello in space1\n";}
class myclass{
    static function hellomethod() {echo "hello in space1\n";}
}
?>

이 파일을 아래 코드에서 포함(include)하여 사용합니다.

사용 예제

<?php
namespace myspace;
include 'test1.php';
const MAX = 200;
function hello() {echo "hello in myspace\n";}
class myclass{
    static function hellomethod() {echo "hello in myspace\n";}
}
hello();
myclass::hellomethod();
echo MAX;
?>

실행 결과

hello in myspace
hello in myspace
200

네임스페이스 접두사 없이 호출했기 때문에 myspace 네임스페이스의 hello(), myclass, MAX가 그대로 사용된 것을 확인할 수 있습니다.

2. 상대적(Relative) 네임스페이스 사용하기

다음 예제는 현재 네임스페이스를 기준으로 하위 네임스페이스를 상대 경로처럼 지정하여 함수와 클래스에 접근합니다.

예제

<?php
namespace myspace;
include 'test1.php';
const MAX = 200;
function hello() {echo "hello in myspace\n";}
class myclass{
    static function hellomethod() {echo "hello in myspace\n";}
}
space1\hello();
space1\myclass::hellomethod();
echo space1\MAX;
?>

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

hello in space1
hello in space1
100

myspace 안에서 space1\... 형태로 작성하면 자동으로 myspace\space1로 해석되므로, 하위 네임스페이스의 요소들이 정상적으로 호출됩니다.

3. 완전 한정(Fully Qualified) 네임스페이스 사용하기

이름 앞에 백슬래시(\)를 붙여 루트부터 시작하는 절대 경로 형태의 네임스페이스 이름을 지정할 수도 있습니다. 이 방식은 현재 위치한 네임스페이스와 무관하게 항상 동일한 요소를 가리키므로 가장 명확합니다.

예제

<?php
namespace myspace;
include 'test1.php';
const MAX = 200;
function hello() {echo "hello in myspace\n";}
class myclass{
    static function hellomethod() {echo "hello in myspace\n";}
}
\myspace\hello();
\myspace\space1\hello();
\myspace\myclass::hellomethod();
\myspace\space1\myclass::hellomethod();
echo \myspace\MAX . "\n";
echo \myspace\space1\MAX;
?>

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

hello in myspace
hello in space1
hello in myspace
hello in space1
200
100

정리

PHP 네임스페이스의 요소에 접근하는 방식은 크게 세 가지입니다. 같은 네임스페이스 내부라면 이름만으로 호출하고, 하위 네임스페이스라면 상대 경로(space1\...)를, 어디서든 정확히 특정 요소를 지정해야 한다면 완전 한정 이름(\myspace\space1\...)을 사용하는 것이 좋습니다. 상황에 맞는 방식을 선택하면 코드의 가독성과 유지보수성이 크게 향상됩니다.