개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.23 15:59

function_exists() 함수 사용에 대한 질문

목록
  • 코딩테스트러버 1일 전 2025.05.23 15:59
  • 2
    1
제가 php를 공부 중에 function_exists() 함수를 사용하여 함수가 존재하는지 확인하려고 합니다.

다음과 같이 함수를 정의하고 function_exists() 함수를 사용하여 함수가 존재하는지 확인했습니다.

php

function add($a, $b) {

    return $a + $b;

}



echo function_exists('add') ? 'true' : 'false';



위 코드에서는 add 함수가 정의되어 있기 때문에 true가 출력됩니다. 하지만, add 함수를 호출하기 전에 function_exists() 함수를 호출하면 false가 출력됩니다.

php

echo function_exists('add') ? 'true' : 'false';

add(3, 5);

echo function_exists('add') ? 'true' : 'false';



이러한 결과가 발생하는 이유는 무엇이며, function_exists() 함수를 사용하여 함수가 존재하는지 확인하는 방법은 무엇일까요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    function_exists() 함수는 PHP에서 함수가 정의되어 있는지 확인하는 데 사용됩니다. 그러나, 이 함수는 함수가 호출되기 전에만 정확한 결과를 반환합니다.

    이러한 이유는 PHP가 함수를 캐싱하는 방식 때문입니다. PHP는 함수를 호출하기 전에 캐시를 생성하여 함수의 결과를 저장합니다. 따라서, 함수가 호출되기 전에 function_exists() 함수를 호출하면 함수가 캐시되어 있지 않기 때문에 false가 반환됩니다.

    하지만, 함수가 호출된 후 function_exists() 함수를 호출하면 함수가 캐시되어 있기 때문에 true가 반환됩니다.

    따라서, function_exists() 함수를 사용하여 함수가 존재하는지 확인하는 방법은 다음과 같습니다.

    1. 함수가 호출되기 전에 function_exists() 함수를 호출하지 말고, 함수를 호출한 후에 function_exists() 함수를 호출하세요.
    2. 함수가 호출되기 전에 function_exists() 함수를 호출하고, 함수가 캐시되지 않도록 clearstatcache() 함수를 호출하세요.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    function add($a, $b) {
    
        return $a + $b;
    
    }
    
    
    
    // 함수가 호출되기 전에 function_exists() 함수를 호출하지 말고, 함수를 호출한 후에 function_exists() 함수를 호출하세요.
    
    add(3, 5);
    
    echo function_exists('add') ? 'true' : 'false';  // true가 출력됩니다.
    
    
    
    // 또는, 함수가 호출되기 전에 function_exists() 함수를 호출하고, 함수가 캐시되지 않도록 clearstatcache() 함수를 호출하세요.
    
    echo function_exists('add') ? 'true' : 'false';  // true가 출력됩니다.
    
    clearstatcache();
    
    echo function_exists('add') ? 'true' : 'false';  // false가 출력됩니다.
    
    


    이러한 방법으로 function_exists() 함수를 사용하여 함수가 존재하는지 확인할 수 있습니다.

    2025-05-23 16:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 22,075건 / 15 페이지

검색

게시물 검색