최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

대개의 프로그래밍의 경우 로컬 변수에 사용하는 변수 이름이 이미 전역 변수로 선언되어 있는 경우

해당 로컬 변수가 범위 안에 있는 동안에는 로컬 정의에 의해 정의가 가려진다.

아래의 경우에는 로컬에서 정의가 되지 않았으므로 전역 변수로 정의하고 사용한다.


var str1:String = "Global"; 
function scopeTest () 
{ 
    trace(str1); 
}
scopeTest(); //Global


만약 전역 변수와 동일한 이름을 함수 내 로컬 변수로 생성할 경우, 함수 내부에서만 사용한뒤 함수 종료와 동시에 메모리에서

삭제하는 휘발성 변수로 취급하게 된다. 다음과 같다..


var str1:String = "Global"; 
function scopeTest () 
{ 
    var str1:String = "Local"; 
    trace(str1);
}
scopeTest();  //Local
trace(str1); // Global

 


 

 

 

자 이제 php다.

php에서는 위와 다르게 전역 변수 이름을 로컬 변수에 그대로 쓰면 스코프가 다르다.

다음 예제에서는 아무런 출력이 되지 않는다.


<?php
 $a = "hello";
 
 function justA(){
  echo $a;
 }
justA(); //출력없음
?>

 

 


 

 

 

이때 global 이라는 키워드로 전역변수에 접근하여 참조하면 된다.

 

방법1.


<?php
 $a = "hello";

 function globalA(){
  global $a;
  echo $a;
 }
 globalA(); // hello
?>


방법2.

 

<?php
 $GLOBALS['a'] = 'hello';

 function justA(){
  echo $GLOBALS['a'];
 }
 justA();
?>

 

 

댓글