로컬 변수의 생명주기를 유지하기
함수가 작동을 끝내면 함수내의 로컬변수는 자동적으로 메모리상에서 사라집니다.
이를 자동적으로 사라지지 않게끔 할 수 있습니다.
함수내에서 static 키워드를 사용합니다.
static 키워드 사용하기
static 로컬 변수명
자 우선 static을 사용하지 않고 볼까요?
<?php function func(){ $disney = 0; $disney++; return $disney; } echo func(); echo '<br>'; echo func(); ?>
위의 코드에서 로컬 변수 disney를 선언했고 증감연산자 ++를 사용했습니다. 그럼 한번 호출 된 후에는 ++에 의해 1이 됩니다.
당연히 함수가 종료 후 disney 변수는 소멸되므로 어떠한 값은 커녕 존재조차 하지 않게 됩니다. 2번 호출 했으나 두번 다 1을 출력하면 정상입니다.
다음은 결과입니다.
그럼 함수의 생명주기가 끝났음에도 static 키워드를 사용한 로컬 변수가 사라지지 않았는지 확인해 볼게요.
위와 동일한 코드에 변수 앞에 static을 사용할 거에요. 그럼 결과는 처음에는 1 그 다음 값은 ++ 에 의해 2가 출력되어야 합니다.
왜냐면 함수가 종료했음에도 메모리상에 남아서 있기 때문이죠.
<?php function func(){ static $disney = 0; $disney++; return $disney; } echo func(); echo '<br>'; echo func(); ?>
위 코드의 결과
첫번째 예제와 달리 함수안에서 static 키워드를 사용했기 때문에 해당 변수가 메모리상에 사라지지 않고 유지되어서 해당 갖고 있던 값 1에서 ++하여 2가 되어 두번째 호출했을 때 2가 출력됩니다.
이렇게 static 키워드에 대해서 알아보았습니다.