2012-11-20 2 views
0
<?php 
namespace Top 
{ 
    $a = "Robert"; 
    $b = "Richard"; 
    $c = "Maurice"; 
    function get_a() 
    { 
    global $a; 
    return $a; 
    } 
    function get_b() 
    { 
    global $b; 
    return $b; 
    } 
    function get_c() 
    { 
    global $c; 
    return $c; 
    } 
    echo namespace\Middle\get_a(); 
    echo namespace\Middle\Bottom\get_c(); 
    echo namespace\get_b(); 
} 

namespace Top\Middle 
{ 
    $a = "Dauraun"; 
    $b = "Khalid "; 
    $c = "Humberto"; 
    function get_a() 
    { 
     global $a; 
     return $a; 
    } 
    function get_b() 
    { 
     global $b; 
     return $b; 
    } 
    function get_c() 
    { 
     global $c; 
     return $c; 
    } 
} 

namespace Top\Middle\Bottom 
{ 
    $a = "Terry"; 
    $b = "Jesse"; 
    $c = "Chris"; 
    function get_a() 
    { 
     global $a; 
     return $a; 
    } 
    function get_b() 
    { 
     global $b; 
     return $b; 
    } 
    function get_c() 
    { 
     global $c; 
     return $c; 
    } 
} 

은?> PHP 네임 스페이스의 글로벌 키워드는

그래서 나는 아직 해당 네임 스페이스와 글로벌 키워드를 사용하여 기능을 사용하여 올바른 변수 내용을 표시하려고 위의 코드에서, 원하는 결과입니다 일어나지 않아. 반환되는 변수 내용은 echo 문이 사용되는 네임 스페이스의 내용이고 지정된 네임 스페이스의 내용은 아닙니다. 출력은 'RobertMauriceRichard'입니다. 누군가 설명해 주시겠습니까? 네임 스페이스에있는 함수 내에서 '글로벌'키워드의 일부분에 대한 오해일까요?

+2

당신은 관련 비트 코드의 짧은 조각을 제공시겠습니까? –

+0

포맷하십시오. 바람직하게는 들여 쓰기 당 4 칸. –

+0

@robertrocha [저에게 도움이됩니다.] (http://codepad.viper-7.com/yl95SH) –

답변

1

only 4 types of code are affected by namespace : 클래스, 인터페이스, 함수, 상수.

따라서 $a, $b, $cecho 문은 전체 파일에서 사용할 수 있습니다.

namespace\Middle\get_a();으로 전화 할 때까지 $a은 여전히 ​​"Robert"이므로 "Robert"가 반환됩니다.

는 다른 네임 스페이스에 echo 그룹을 넣어보십시오, 당신은 다른 결과를 관찰 할 수 있습니다 :

namespace Top\Middle 
{ 
    /*...*/ 
    echo \Top\Middle\get_a(); 
    echo \Top\Middle\Bottom\get_c(); 
    echo \Top\get_b(); 
} 
/* outputs "DauraunHumbertoKhalid" */ 

namespace Top\Middle\Bottom 
{ 
    /*...*/ 
    echo \Top\Middle\get_a(); 
    echo \Top\Middle\Bottom\get_c(); 
    echo \Top\get_b(); 
} 
/* outputs "TerryChrisJesse" */ 
관련 문제