네임스페이스 개요

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

네임스페이스란 무엇입니까? 가장 광범위한 정의에서 네임스페이스는 항목을 캡슐화하는 방법입니다. 이것은 많은 곳에서 추상적 개념으로 볼 수 있습니다. 예를 들어, 모든 운영 체제에서 디렉토리는 관련 파일을 그룹화하고 그 안에 있는 파일에 대한 네임스페이스 역할을 합니다. 구체적인 예로, foo.txt 파일은 /home/greg 디렉토리와 /home/other 디렉토리 모두에 존재할 수 있지만 foo.txt의 두 복사본은 같은 디렉토리에 공존할 수 없습니다. 또한 /home/greg 디렉토리 외부의 foo.txt 파일에 액세스하려면 디렉토리 구분자를 사용하여 파일 이름 앞에 디렉토리 이름을 추가하여 /home/greg/foo.txt를 가져와야 합니다. 이 동일한 원칙이 프로그래밍 세계의 네임스페이스로 확장됩니다.

PHP 세계에서 네임스페이스는 라이브러리 및 애플리케이션 작성자가 클래스 또는 함수와 같은 재사용 가능한 코드 요소를 생성할 때 직면하는 두 가지 문제를 해결하도록 설계되었습니다.

  • 생성한 코드와 내부 PHP 클래스/함수/상수 또는 타사 클래스/함수/상수 간의 이름 충돌.
  • 첫 번째 문제를 완화하고 소스 코드의 가독성을 향상시키도록 설계된 Extra_Long_Names의 별칭(또는 단축) 기능.

PHP 네임스페이스는 관련 클래스, 인터페이스, 함수 및 상수를 그룹화하는 방법을 제공합니다. 다음은 PHP의 네임스페이스 구문의 예입니다.

예제 #1 네임스페이스 구문 예

                  
<?php
namespace my\name; // see "Defining Namespaces" section

class MyClass {}
function myfunction() {}
const MYCONST = 1;

$a = new MyClass;
$c = new \my\name\MyClass; // see "Global Space" section

$a = strlen('hi'); // see "Using namespaces: fallback to global
                   // function/constant" section

$d = namespace\MYCONST; // see "namespace operator and __NAMESPACE__
                        // constant" section
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // see "Namespaces and dynamic language features" section
?>
                  
                

참고: 네임스페이스 이름은 대소문자를 구분하지 않습니다.

참고: 네임스페이스 이름 PHP와 이 이름으로 시작하는 복합 이름(예: PHP\Classes)은 내부 언어용으로 예약되어 있으며 사용자 공간 코드에서 사용해서는 안 됩니다.