happy cat image

everdevel

Web Technology, 에버디벨

EEOS

에버디벨 책을 학습할 수 있는 클라우드 개발 환경을 제공합니다.
개발환경구축없이 태블릿에서도 개발할 수 있는 책의 예제와 프로젝트
오직 당신을 위한 스토리지, URL, DB, 무제한 트래픽
그리고 웹기반 개발환경을 제공합니다.

더 알아보기
에버디벨이 만든 무료 클라우드 개발환경을 소개합니다.

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

함수가 작동을 끝내면 함수내의 로컬변수는 자동적으로 메모리상에서 사라집니다.
이를 자동적으로 사라지지 않게끔 할 수 있습니다.
함수내에서 static 키워드를 사용합니다.

static 키워드 사용하기

static 로컬 변수명

자 우선 static을 사용하지 않고 볼까요?

<?php
    function func(){
        $disney = 0;
        $disney++;
        return $disney;
    }

    echo func();
    echo '<br>';
    echo func();
?>

(로그인을 하시면 위의 코드를 실행 할 수 있습니다.
oAuth인증 방식으로 빠르고 간편하게 로그인할 수 있습니다.
네이버, 구글, 카카오, 라인의 ID로 순식간에 로그인 하세요.)

위의 코드에서 로컬 변수 disney를 선언했고 증감연산자 ++를 사용했습니다. 그럼 한번 호출 된 후에는 ++에 의해 1이 됩니다.
당연히 함수가 종료 후 disney 변수는 소멸되므로 어떠한 값은 커녕 존재조차 하지 않게 됩니다. 2번 호출 했으나 두번 다 1을 출력하면 정상입니다.

다음은 결과입니다.

그럼 함수의 생명주기가 끝났음에도 static 키워드를 사용한 로컬 변수가 사라지지 않았는지 확인해 볼게요. 위와 동일한 코드에 변수 앞에 static을 사용할 거에요. 그럼 결과는 처음에는 1 그 다음 값은 ++ 에 의해 2가 출력되어야 합니다.
왜냐면 함수가 종료했음에도 메모리상에 남아서 있기 때문이죠.

<?php
    function func(){
        static $disney = 0;
        $disney++;
        return $disney;
    }

    echo func();
    echo '<br>';
    echo func();
?>

(로그인을 하시면 위의 코드를 실행 할 수 있습니다.
oAuth인증 방식으로 빠르고 간편하게 로그인할 수 있습니다.
네이버, 구글, 카카오, 라인의 ID로 순식간에 로그인 하세요.)

위 코드의 결과

php image

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

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


    
    

강좌로 돌아가기

댓글 0개

정렬기준