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

PHP 네임스페이스 완벽 가이드: 개념부터 예제까지


네임스페이스(Namespace)란?

PHP에서 네임스페이스(namespace)를 사용하면 이름이 같은 클래스, 함수, 상수를 서로 충돌 없이 다른 맥락에서 사용할 수 있으며, 이를 통해 해당 요소들이 캡슐화됩니다. 네임스페이스는 관련성을 기준으로 클래스나 함수 등을 논리적으로 묶는 개념입니다. 마치 서로 다른 폴더에는 동일한 이름의 파일이 공존할 수 있듯이, 같은 이름의 클래스 역시 서로 다른 네임스페이스 안에서 각각 정의될 수 있습니다. 또한 파일에 접근하려면 전체 경로를 지정해야 하는 것처럼, 클래스를 사용할 때도 네임스페이스를 포함한 전체 이름을 명시해야 합니다.

애플리케이션 코드가 커질수록 네임스페이스의 활용은 필수적이 됩니다. 모든 클래스와 함수에 일일이 고유한 이름을 부여하는 작업은 번거롭고 결코 우아하지 않은데, 이럴 때 네임스페이스가 큰 도움이 됩니다. 예를 들어 면적(area)을 계산하는 calculate() 함수와 세금(tax)을 계산하는 calculate() 함수가 모두 필요하다면, calculate_area(), calculate_tax()처럼 이름을 억지로 만들어 내는 대신 area와 tax라는 두 개의 네임스페이스를 만들고 그 안에 각각 calculate() 함수를 정의하면 됩니다.

네임스페이스를 사용하면 다음 두 가지 문제가 해결됩니다.

  • 개발자가 직접 정의한 클래스·함수·상수와 서드파티(외부 라이브러리)의 클래스·함수·상수 사이의 이름 충돌(name collision)을 방지합니다.
  • Extra_Long_Names처럼 지나치게 긴 이름에 별칭(alias)을 붙이거나 축약해 사용할 수 있게 하여 소스 코드의 가독성을 높입니다.

즉, PHP 네임스페이스는 관련된 클래스, 인터페이스, 함수, 상수를 하나의 그룹으로 묶는 방법을 제공합니다. 참고로 네임스페이스 이름은 대소문자를 구분하지 않습니다(case-insensitive).

네임스페이스 선언 예제

네임스페이스는 namespace 키워드로 선언하며, 파일 내에서 다른 어떤 코드보다 먼저 위치해야 합니다.

<?php
namespace myspace;
function hello() {
    echo "Hello World\n";
}
?>

네임스페이스 함수 호출하기

네임스페이스 안에 정의된 함수를 호출하려면 use 키워드를 함께 사용합니다. 이때 함수 이름은 네임스페이스로 한정(qualified)됩니다.

<?php
namespace myspace;
function hello() {
    echo "Hello World\n";
}
use myspace;
myspace\hello();
?>

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Hello World