phpclass/객체정보2008. 8. 9. 12:35
작성: 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 >
 

Posted by 방글24