happy cat image

everdevel

So This Is Love

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























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

방문해 주셔서 감사합니다.

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

함수가 작동을 끝내면 함수내의 로컬변수는 자동적으로 메모리상에서 사라집니다.
이를 자동적으로 사라지지 않게끔 할 수 있습니다.
함수내에서 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 키워드에 대해서 알아보았습니다.


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

최경아 크리에이티브디렉터의 호텔웨딩플라워디자인 컬러별로 제안하는 웨딩 플라워 공간장식 예비 신부들의 플라워제안과 플로리스트들에게 꽃 장식을 제안하는 플라워디자인 서적


    
    

강좌로 돌아가기

댓글 0개

정렬기준