로컬 변수의 생명주기를 유지하기

함수가 작동을 끝내면 함수내의 로컬변수는 자동적으로 메모리상에서 사라집니다.
이를 자동적으로 사라지지 않게끔 할 수 있습니다.
함수내에서 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();
?>

위 코드의 결과

php image

첫번째 예제와 달리 함수안에서 static 키워드를 사용했기 때문에 해당 변수가 메모리상에 사라지지 않고 유지되어서 해당 갖고 있던 값 1에서 ++하여 2가 되어 두번째 호출했을 때 2가 출력됩니다.

이렇게 static 키워드에 대해서 알아보았습니다.