현재 위치: > 최신 기사 목록> function_exists를 사용하여 내장 기능과 사용자 정의 기능을 구별하는 방법은 무엇입니까? 자세한 방법 분석

function_exists를 사용하여 내장 기능과 사용자 정의 기능을 구별하는 방법은 무엇입니까? 자세한 방법 분석

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,당신은 몇 가지 진술이나 의견을 배치 할 수 있습니다</span></span><span>
</span><span><span class="hljs-comment">// 예를 들어, 프로그램 저자 정보、타임 스탬프 등</span></span><span>
</span><span><span class="hljs-comment">// Author: ChatGPT</span></span><span>
</span><span><span class="hljs-comment">// Date: 2025-07-02</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>사용하는 방법function_exists기능은 내장 기능과 사용자 정의 기능을 구별합니다?자세한 방법 분석</h1>

<p>존재하다PHP개발 중,我们经常会遇到需要判断某个函数是否存존재하다的情况。PHP매우 실용적인 기능이 내장되어 있습니다 <code></span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>()

함수의 존재를 결정하기 위해 function_exists () 를 사용하는 기본 예

 &lt;?php
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'array_merge'</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'array_merge 函数存존재하다'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'array_merge 函数不存존재하다'</span></span><span>;
}
?&gt;

이 예에서 Array_Merge 는 PHP의 내장 기능이며 일반적으로 존재합니다.

내장 기능과 사용자 정의 기능을 구별하기 위해 function_exists ()를 직접 사용할 수없는 이유는 무엇입니까?

function_exists () 는 함수가 존재하는지 여부를 감지 할 수 있지만 함수가 PHP에 내장되어 있는지 또는 사용자 정의 된 지 여부는 알 수 없습니다. 함수 이름이 등록되었는지 여부에만 관심이 있습니다.

다시 말해, function_exists ()는 내장 함수 및 사용자 정의 함수와 "동일"하며, 이들이 존재하는지 여부를 판단하고 소스와 구별되지 않는 것만 판단합니다.

그렇다면 내장 기능과 사용자 정의 기능을 구별하는 방법은 무엇입니까?

내장 기능과 사용자 정의 함수를 구별하려면 get_defined_functions () 함수와 함께 사용할 수 있습니다.

이 함수는 두 개의 키를 포함하는 연관 배열을 반환합니다.

  • 내부 : 모든 내장 기능 이름 배열
  • 사용자 : 모든 사용자 정의 함수 이름 배열

샘플 코드 :

 &lt;?php
</span><span><span class="hljs-variable">$allFunctions</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_defined_functions</span></span><span>();

</span><span><span class="hljs-variable">$functionName</span></span><span> = </span><span><span class="hljs-string">'array_merge'</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-variable">$functionName</span></span><span>)) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$functionName</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>[</span><span><span class="hljs-string">'internal'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$functionName</span></span></span><span> 내장 기능입니다";
    } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$functionName</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>[</span><span><span class="hljs-string">'user'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$functionName</span></span></span><span> 커스텀 기능입니다";
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$functionName</span></span></span><span> 存존재하다,분류되지 않았습니다";
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$functionName</span></span></span><span> 不存존재하다";
}
?&gt;

완전한 예 : 사용자 정의 기능과 내장 기능의 차이

 &lt;?php
</span><span><span class="hljs-comment">// 사용자 정의 기능 예제</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">my_custom_func</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">'这커스텀 기능입니다'</span></span><span>;
}

</span><span><span class="hljs-variable">$allFunctions</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_defined_functions</span></span><span>();

</span><span><span class="hljs-comment">// 내장 기능을 확인하십시오</span></span><span>
</span><span><span class="hljs-variable">$func1</span></span><span> = </span><span><span class="hljs-string">'strlen'</span></span><span>;
</span><span><span class="hljs-comment">// 사용자 정의 기능을 확인하십시오</span></span><span>
</span><span><span class="hljs-variable">$func2</span></span><span> = </span><span><span class="hljs-string">'my_custom_func'</span></span><span>;
</span><span><span class="hljs-comment">// 检查不存존재하다函数</span></span><span>
</span><span><span class="hljs-variable">$func3</span></span><span> = </span><span><span class="hljs-string">'non_exist_func'</span></span><span>;

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">checkFunctionType</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$funcName</span></span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-variable">$funcName</span></span><span>)) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$funcName</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>[</span><span><span class="hljs-string">'internal'</span></span><span>])) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$funcName</span></span></span><span> 내장 기능입니다\n";
        } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$funcName</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>[</span><span><span class="hljs-string">'user'</span></span><span>])) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$funcName</span></span></span><span> 커스텀 기능입니다\n";
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$funcName</span></span></span><span> 存존재하다,분류되지 않았습니다\n";
        }
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$funcName</span></span></span><span> 不存존재하다\n";
    }
}

</span><span><span class="hljs-title function_ invoke__">checkFunctionType</span></span><span>(</span><span><span class="hljs-variable">$func1</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">checkFunctionType</span></span><span>(</span><span><span class="hljs-variable">$func2</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">checkFunctionType</span></span><span>(</span><span><span class="hljs-variable">$func3</span></span><span>, </span><span><span class="hljs-variable">$allFunctions</span></span><span>);
?&gt;

위의 코드를 실행하면 다음을 얻을 수 있습니다.

 strlen 내장 기능입니다
my_custom_func 커스텀 기능입니다
non_exist_func 不存존재하다

요약

  • function_exists ()는 함수가 정의되었는지 여부를 감지 할 수 있지만 내장 기능과 사용자 정의 함수를 구별 할 수는 없습니다.
  • 내장 및 사용자 정의 기능을 포함하여 각각 get_defined_functions ()를 통해 시스템의 모든 기능을 얻으십시오.
  • 이 두 기능을 결합하여 함수가 존재하는지 여부와 내장 또는 사용자 정의인지 정확하게 결정할 수 있습니다.

위의 방법을 마스터하면 PHP 개발에서 기능 관련 논리를보다 유연하게 처리하고, 갈등 또는 반복적 인 정의를 피하고, 코드 견고성을 향상시킬 수 있습니다.