2011-01-30 11 views
0

로그인/사용자 정보가 들어있는 Information이라는 기존 객체가 있습니다. 나는 다른 수업에서 이것을보고 싶다. 나는 인터넷 검색을 시도하고 나이를 찾고 ... 운이 없다. Information 개체가 범위를 벗어나는 이유는 무엇입니까?PHP : 클래스 내의 기존 객체에 액세스하기

class foo() { 
function display() { 
    print_r($Information); 
} 
} 

답변

1

$ 정보가 여러 가지 이유로 범위를 벗어날 수 있습니다.

첫째, 어쩌면 $ 정보는 글로벌이며, 당신은 단지 글로벌 키워드로 PHP를 알려줄 필요가 :

class foo() { 
function display() { 
    global $Information 
    print_r($Information); 
} 
} 

둘째, 어쩌면 $ 정보가 foo는 인스턴스의 일부인가? 이 경우 PHP에서 "$ this"키워드가 필요합니다.

class foo() { 
function display() {  
    print_r($this->Information); 
} 
} 

셋째, 아마도 $ 정보가 발신자에게 생성되어 display/foo는 단순히 그것에 대해 아무것도 모르는 것입니다.

function bar() 
{ 
    $Information = new $information; 
    $a = new Foo(); 
    $a->display(); 
{ 

당신이 명시 적으로 표시 $ 정보를 전달하거나 각 푸 인스턴스의 멤버 변수하게하지 않는 한

, 디스플레이에 액세스 할 수 없습니다. 디스플레이는 (1) 전역 변수 (2) 인스턴스 변수, (3) 표시 할 매개 변수 및 (4) 표시 할 로컬 변수를 볼 수 있습니다. display()의 범위 내에있는 것은 없습니다.

귀하의 질문에 대한 답변을 편집하십시오. 예 전적으로 글로벌이라고 정의되었습니다. 특정 기능 즉, 내되지 같이 :

전역을 피하기 위해 많은 이유가있다. 이 주제에 많은 내용이 적혀 있습니다. 주제에 대한 설명은 stackoverflow question입니다.

+0

고맙습니다! 내가 해결 한 첫 번째 방법은 클래스 외부에있는 정보 속성 중 하나를 가져온 다음 global 키워드를 사용하여 해당 변수에 액세스하는 것입니다. 당신이 괜찮다면, * 정보가 글로벌 *이라고 말할 때 당신은 무엇을 의미합니까? 또한 향후 글로벌 사용을 피해야하는 주된 이유가 있습니까? 추신 : 전 * 글로벌 $ 정보 *를했는데 효과가있었습니다. – Mike

관련 문제