작성: 2008.08.09
내장 네임스페이스
php v5.3 이전의 네임스페이스
php v5.3 이전에도 내장된 네임스페이스가 존재하고 있었습니다.
[code php;gutter:false]
<?php
$str = "전역 네임스페이스(global namespace)의 변수";
function test() {
$str = "지역 네임스페이스(local namespace)의 변수";
print "$str<BR>\n";
global $str;
print "$str<BR>\n";
}
test();
?>
[/code]
test() 함수 내에서 동일한 변수이름 $str이 두 번 사용되고 있지만 하나는 지역 네임스페이스에서, 다른 하나는 전역 네임스페이스의 이름을 참조합니다. 따라서 이 소스를 실행하면 아래와 같이 나타날 것입니다.
전역 네임스페이스 - 함수(또는 클래스) 바깥쪽에서 정의된 이름
지역 네임스페이스 - 함수(또는 메소드) 안에서 정의된 이름 또는 클래스 안에서 정의된 이름
지역 네임스페이스 - 함수(또는 메소드) 안에서 정의된 이름 또는 클래스 안에서 정의된 이름
이와 같이 php v5.3 이전에도 내장된 네임스페이스가 존재하고 있어서 묵시적(implicit)으로 사용하여 왔으나, php v5.3 부터는 프로그래머가 새로운 네임스페이스를 직접 명시적(explicit)으로 정의하여 사용할 수 있도록 하였습니다.
전역 네임스페이스(Global namespace; Global space)
네임스페이스를 지원하는 php v5.3에서 네임스페이스가 정의되지않은 클래스 및 함수는 전역 네임스페이스에 존재합니다. 전역 네임스페이스는 특정한 이름(identifier)을 가지고 있지 않기 때문에 네임스페이스_식별자::함수명과 같은 식으로 호출할 수가 없으므로 이 때는 네임스페이스_식별자없이 범위지정자 ::로 시작되는, 즉 ::함수명과 같은 식으로 전역 네임스페이스에 존재하는 함수를 호출합니다.
[code php;gutter:false]
<?php
namespace A::B::C;
/* This function is A::B::C::fopen */
function fopen() {
/* ... */
$f = ::fopen(...); // call global fopen
return $f;
}
?>
[/code]
< 출처:php.net >
'phpclass > 객체정보' 카테고리의 다른 글
{네임스페이스}6.이름지정규칙 (0) | 2008.08.11 |
---|---|
{네임스페이스}5.네임스페이스 다루기 (0) | 2008.08.09 |
{네임스페이스}3.네임스페이스의 정의 (0) | 2008.08.09 |
{네임스페이스}2.네임스페이스의 필요성 (0) | 2008.08.09 |
{네임스페이스}1.네임스페이스란? (0) | 2008.08.09 |