PHP 논리연산자 || 의 특이한 사용예

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on print
Print

요즘에 많이 사용하고 있는 wordpress plugin의 코드를 보다가 특이한 문구를 발견했다.

defined( 'ABSPATH' ) || exit;

OR 논리연산자(Logical Operator)의 좌측엔 boolean을 return하는 함수가, 오른쪽엔 실행코드가 들어있는데 교과서에서 보던 코드는 아니었다.

[조건 함수] || [실행 함수];

코드의 의미는 아마도 위 [조건 함수]가 아닌 경우 [실행 함수]를 실행하시오로 추정된다. 익숙한 코드로는 아래와 같이 말이다.

if ( ! defined( 'ABSPATH' ) ) {
    exit; 
}

실제로 어떻게 동작하는지 한번 돌려보도록 하자.


Sample Code

아래와 같이 ① [조건 함수] || [실행 함수], ② if (![조건 함수]) 형태를 각각 실행해 보고 결과를 살펴보자.

<?php
// 상수 : [조건 함수] = true
define('MY_CONSTANT_01', 'my constant for test');
defined('MY_CONSTANT_01') || print('\'MY_CONSTANT_01\' was not defined. (1) <br>');
if (! defined('MY_CONSTANT_01'))
    print('\'MY_CONSTANT_01\' was not defined. (2) <br>');

// 상수 : [조건 함수] = false
defined('MY_CONSTANT_02') || print('\'MY_CONSTANT_02\' was not defined. (1) <br>');
if (! defined('MY_CONSTANT_02'))
    print('\'MY_CONSTANT_02\' was not defined. (2) <br>');

// 변수 : [조건 함수] = false
isset($my_var_01) || print('$my_var_01 is not defined. (1)<br>');
if (! isset($my_var_01))
    print('$my_var_01 is not defined. (2)<br>');

// 변수 : [조건 함수] = true
$my_var_02 = '';
isset($my_var_02) || print('$my_var_02 is null. (1) <br>');
if (! isset($my_var_02))
    print('$my_var_02 is not defined. (2)<br>');

결과는 아래와 같이 나타난다.

'MY_CONSTANT_02' was not defined. (1) 
'MY_CONSTANT_02' was not defined. (2) 
$my_var_01 is not defined. (1)
$my_var_01 is not defined. (2)

결론

익숙하지 않은 모양이지만 아래 2개의 코드는 같은 코드이다.

[조건 함수] || [실행 함수];

if (! [조건 함수]) [실행 함수];


기타 참고자료1

Footnotes

  1. https://www.php.net/manual/en/language.operators.logical.php 의 User Contributed Note 참조

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

  • 카테고리

  • Count per Day

    • 191This post:
    • 106608Total reads:
    • 60707Total visitors:
    • 23Reads today:
    • 23Visitors today:
    • 2019년 3월 10일Counter starts on: