모두의매뉴얼
🚀

[PHP] 코드 실행을 멈추는 방법 feat. exit or return

📈21


문제 발생

모든 프로그래밍 언어가 마찬가지이지만, 프로그래밍의 기본은 특정 조건에 따라 어떤 액션을 취할 것인가에 따라서 수많은 if 문을 사용하게 됩니다.

그러다 보니까 수많은 조건문(if)이 모이면 아래와 같은 모습이 되는데,

if ( ... ) {
    ....
    if ( ... ) {
        ...
        if ( ... ) {
            ...
        }
        ...
        if ( ... ) {
            ...
        }
    }
} 

보기만 해도 어지럽죠? 그래서 우리는 중첩되는 if 문을 하나라도 줄여서 코드를 더욱 알아보기 쉽게 만들 필요가 있다고 생각합니다.

PHP 프로그래밍을 하면서 어떤 함수를 만들어서 사용하는데, 특정 변수가 있어야만 작동하는 함수라고 해봅시다. 이런 상황에서는 아래와 같이 코드를 짤 수 있겠죠?

function fn_test( $var ) {
    if ( ! empty( $_var ) ) {
        // 실행할 코드
    } else {
        // 변수가 없을 때의 코드
    }
}

계속 이렇게 사용 하다 보니 뭔가 if 문 중첩이 너무나 많아지면서 상당히 코드가 복잡해지는 상황이 발생해서 조금이라도 해소할 방법이 없을까 고민해 보았습니다.

exit

PHP.net 의 exit 문서를 보면 exit 명령어에 대해서 아래와 같이 설명하고 있습니다.

Output a message and terminate the current script

다시 말해서 특정 메시지를 반환하면서, 현재 스크립트 실행을 중단한다는 이야기입니다.

문돌이 출신으로서 이런 함수들을 발견한다는게 상당히 흥미롭고 재미있네요.

솔루션

자, 그럼 이제 위에서 찾은 exit 함수를 이용해서 if 문 중첩을 조금이라도 줄이는 방법을 알아 볼까요? 일단 위에서 예를 든 코드를 그대로 가져와 보죠.

function fn_test( $var ) {
    if ( ! empty( $_var ) ) {
        // 실행할 코드
    } else {
        // 변수가 없을 때의 코드
    }
}

이 코드에서는 $var 라는 변수가 있을 때 설정한 작업을 실행하고 그렇지 않을 경우를 대비해 둔 것인데, 이 과정을 변수가 없으면 코드 실행을 중단하고 그렇지 않으면 설정한 작업을 수행하도록 해보겠습니다.

function fn_test( $var ) {
    if ( empty( $_var ) ) { exit; }
    // 실행할 코드
}

뭔가 굉장히 간단하지 않나요? exit 명령어가 실행되고 나면 그 뒤에 있는 코드는 모두 중단(terminated) 되기 때문에 코드가 한층 더 간단해졌음을 알 수 있습니다.

exit 는 PHP 4, 5, 7, 8 버전에서 사용할 수 있으며, exit() 의 형태로 특정 메시지나 에러 코드를 반환 할 수 있기 때문에 매우 유용하게 사용할 수 있을 것 같습니다.

주의사항

다만 exit 를 사용할 때 반드시 주의해야 할 사항이 있습니다.

위에서 언급한대로 exit 를 사용하면 나머지 스크립트(코드)가 모두 실행이 중단되거든요? 다시 말해서 특정 함수의 나머지 부분을 중단하는게 아니라 나머지 전체 코드 실행을 중단하다보니 정작 원하는 부분이 표시 되지 않을 수도 있다는 것입니다.

그래서 특정 함수의 나머지 부분만 실행을 중단하고 싶은 경우에는 반드시 아래 코드 처럼 return 을 사용해줘야 합니다.

function fn_test( $var ) {
    if ( empty( $_var ) ) { return; }
    // 실행할 코드
}

끝.

    댓글 남기기

© 모두의매뉴얼 2024
🗝️