2011-03-31 10 views
1

가능한 중복 : 나는PHP 전역 변수는 함수에서 찾을 수 없습니다

global $var1; 

function func1() { 
    $var1->something(); // $var1 not found ... why? 
} 

같은 PHP 스크립트가 someting 내가 모든 글로벌 $의 VAR1을 수행해야이
Global variables in PHP

기능?

+2

심각하게 말하지만, ** 당신은 http://stackoverflow.com/questions/ask-advice에서 질문하는 것처럼 ** 질문을하기 전에 ** 검색을 수행합니까? 똑같은 일이 단지 9 시간 전에 요청되었고 그것은 이미 많은 사람들의 사본이었습니다. 요청하기 전에 숙제를하십시오. – Gordon

답변

4

모든 기능에서 전역 $ var1을 수행해야합니까?

예.

PHP의 함수는 자체 가변 범위를 갖습니다. 전역 범위에서 변수에 액세스하는 유일한 방법은 변수를 직접 요청하는 것입니다.

이것이 어떻게 읽기 힘든 스파게티 코드를 유발하는지 이해하게 될 것입니다. 가능한 한 언제나 전역을 피하십시오.

OO 코드를 작성하는 경우 대신 a Registry (이름 공간 컬렉션) 및/또는 Dependency Injection (생성자에서 새 개체에 필요한 개체 전달)을 고려하십시오.

+4

나는 레지스트리에 네임 스페이스의 글로벌 (Global)을 호출 할 것입니다. 왜냐하면 정적으로 액세스 할 때 그렇기 때문입니다. '$ GLOBALS'을 사용하거나'global' 키워드로 배열을 가져 오는 것과 같은 문제가 있습니다. http://stackoverflow.com/questions/5283102/how-is-testing-registry-pattern-or-singleton-hard-in-php/5283151#5283151을 참조하십시오. – Gordon

1

다른 방법입니다.

$var1 = new StdClass(); 

function func1() { 
    global $var1 
    $var1->something(); // $var1 not found ... why? 
} 
` 

예 실제로 선언 한 모든 기능에서이 방법으로 호출해야합니다.

관련 문제