`namespace` 키워드와 `__NAMESPACE__` 매직 상수
namespace 키워드와 __NAMESPACE__ 매직 상수
현재 네임스페이스 안의 요소에 추상적으로 접근하는 두 가지 방법, __NAMESPACE__ 매직 상수와 namespace 키워드를 다룬다. 특히 동적으로 이름을 만들 때 유용한 __NAMESPACE__ 와, 네임스페이스에서의 self 와 같은 역할을 하는 namespace 연산자를 예제로 살펴본다.
본문
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
PHP는 현재 네임스페이스 안의 요소에 추상적으로 접근하는 두 가지 방법을 지원합니다. __NAMESPACE__ 매직 상수와 namespace 키워드가 그것입니다.
__NAMESPACE__ 의 값은 현재 네임스페이스 이름을 담은 문자열입니다. 전역, 즉 네임스페이스가 없는 코드에서는 빈 문자열을 담습니다.
예제 #1 __NAMESPACE__ 예제, 네임스페이스 코드
<?php
namespace MyProject;
echo '"', __NAMESPACE__, '"'; // outputs "MyProject"
예제 #2 __NAMESPACE__ 예제, 전역 코드
<?php
echo '"', __NAMESPACE__, '"'; // outputs ""
__NAMESPACE__ 상수는 이름을 동적으로 구성할 때 유용합니다. 예를 들어:
예제 #3 동적 이름 구성에 __NAMESPACE__ 사용하기
<?php
namespace MyProject;
function get($classname)
{
$a = __NAMESPACE__ . '\\' . $classname;
return new $a;
}
namespace 키워드는 현재 네임스페이스 또는 하위 네임스페이스에서 요소를 명시적으로 요청할 때 사용할 수 있습니다. 클래스에서의 self 연산자에 해당하는 네임스페이스 버전입니다.
예제 #4 네임스페이스 안에서의 namespace 연산자
<?php
namespace MyProject;
use blah\blah as mine; // see "Using namespaces: Aliasing/Importing"
blah\mine(); // calls function MyProject\blah\mine()
namespace\blah\mine(); // calls function MyProject\blah\mine()
namespace\func(); // calls function MyProject\func()
namespace\sub\func(); // calls function MyProject\sub\func()
namespace\cname::method(); // calls static method "method" of class MyProject\cname
$a = new namespace\sub\cname(); // instantiates object of class MyProject\sub\cname
$b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b
예제 #5 전역 코드에서의 namespace 연산자
<?php
namespace\func(); // calls function func()
namespace\sub\func(); // calls function sub\func()
namespace\cname::method(); // calls static method "method" of class cname
$a = new namespace\sub\cname(); // instantiates object of class sub\cname
$b = namespace\CONSTANT; // assigns value of constant CONSTANT to $b
더 알아보기
- 네임스페이스와 동적 언어 기능 (Namespaces and dynamic language features)
- 별칭 및 가져오기 (Aliasing and Importing)
- 네임스페이스 개요 (Namespaces overview)