모든 언어에서 변수의 사용은 매우 중요하다. 무분별한 전역변수를 사용시 리소스 관리에 심각한 문제를 발생시킬 수 있으므로 해당하는 유효영역 내에서 변수 타입이 선언되고 사용되어야 할 것이다. 변수를 선언할 때는 참조할 범위의 지정이 매우 중요하다 하겠다. php 역시 당연하며 어떻게 변수를 선언하고 사용하는 것이 효과적인지 아래에서 알아보고자 한다.

! 전역변수의 선언
전역변수는 전역 범위(global scope)에서 사용가능한 변수를 의미한다. 간단하게 예를들어 전역변수는 전역범위 어디에서든 해당 변수를 참조할 수 있게된다. 그렇다면 어떻게해야 전역변수를 선언할 수 있을까?


# 전역변수 선언하는 방법
<?php
   $test = 123;
?>


위에 선언된 $test 변수는 전역변수이다. 전역변수이기 때문에 당연히 include 또는 require로 추가된 파일에도 스콥이 포함되 사용이 가능한다. 하지만 아래와 같은 경우는 어떻게 될까?

<?php
   $test = 123;
   function() {
      echo $test;
   }
?>



결론부터 말하자면 $test는 123이 출력되지 않는다. 그 이유는 함수 내부에서 사용된 scope 영역이 전역영역과 구분되기 때문이다. 하지만 전역변수를 함수 내부 scope으로 가져와 유효 범위로 설정할 수 있는데 이때 global 키워드를 사용한다.



<?php
   $test = 123;
   function printText() {
      global $test;
      echo $test;
   }
?>

보는 바와 같이 global 키워드를 사용하여 변수에 선언할 경우 전역변수가 함수내에서 사용이 가능하다. 아래와 같이 다수의 변수를 사용할 수도 있다.

<?php
   global $abc, $def;
?>

# 정적변수 static variable 사용하기

PHP 언어에는 정적변수(static variable)가 존재한다. 정적변수는 무엇일까? 쉽게 설명하면 정적변수는 한번 선언되고 그 값이 변경되면 변경된 값 그대로 값이 존재하게된다. 이해가 되는가? 클로저(Closure) 내에서 존재하는 특수한 함수 기능처럼 사용이 가능하다. 간단한 예제가 바로 counter() 함수를 만드는 것이다.

<?php
   function counter() {
      static $num = 10;
      echo $num;
      $num--;
   }
?>


간단한 카운트다운 함수가 만들어졌다. static 키워드를 사용하여 이 함수는 10부터 9, 8, 7 ... 계속해서 -1을 뺀 값을 출력할 것이다.

static 변수의 장점은 함수내에 존재하는 변수가 한번 사용되고 끝나는 것이 아니라 상황에 따라 계속해서 필요한 역할을 수행할 수 있다는 점이다.

여기까지 php 변수에 대하여 알아보았다. 변수의 사용은 성능과 메모리에 영향을 미치므로 신중하게 선택해 사용해야 할 것이다.