Aktueller Standort: Startseite> Neueste Artikel> Wie unterscheidet ich zwischen integrierten und benutzerdefinierten Funktionen mithilfe von Function_exists? Detaillierte Methodenanalyse

Wie unterscheidet ich zwischen integrierten und benutzerdefinierten Funktionen mithilfe von Function_exists? Detaillierte Methodenanalyse

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Sie können einige Aussagen oder Kommentare ablegen</span></span><span>
</span><span><span class="hljs-comment">// Zum Beispiel Programmautorinformationen、Zeitstempel usw.</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>Wie man es benutztfunction_existsFunktionen unterscheiden zwischen integrierten und benutzerdefinierten Funktionen?Detaillierte Methodenanalyse</h1>

<p>existierenPHPWährend der Entwicklung,我们经常会遇到需要判断某个函数是否存existieren的情况。PHPEine sehr praktische Funktion ist integriert in <code></span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>()

Grundlegende Beispiel für die Verwendung von Funktion_Exists (), um die Existenz einer Funktion zu bestimmen

 &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 函数存existieren'</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 函数不存existieren'</span></span><span>;
}
?&gt;

In diesem Beispiel ist Array_Merge eine integrierte Funktion von PHP und kehrt normalerweise zu existieren.

Warum können wir nicht direkt Funktion_Exists () verwenden, um zwischen integrierten und benutzerdefinierten Funktionen zu unterscheiden?

Obwohl Function_Exists () erkennen kann, ob die Funktion existiert, kann sie Ihnen selbst nicht sagen, ob die Funktion in PHP oder benutzerdefiniert ist. Es kümmert sich nur darum, ob der Funktionsname registriert ist.

Mit anderen Worten, Function_Exists () ist "gleich" für integrierte Funktionen und benutzerdefinierte Funktionen, nur zu beurteilen, ob sie existieren und nicht von Quellen unterscheiden.

Wie kann man also zwischen integrierten und benutzerdefinierten Funktionen unterscheiden?

Um zwischen integrierten und benutzerdefinierten Funktionen zu unterscheiden, können Sie sie in Verbindung mit der Funktion get_defined_functions () verwenden.

Diese Funktion gibt ein assoziatives Array mit zwei Schlüssel zurück:

  • intern : alle integrierten Funktionsnamen Arrays
  • Benutzer : Alle benutzerdefinierten Funktionsnamenarray

Beispielcode:

 &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> Es ist eine integrierte Funktion";
    } </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> Es ist eine benutzerdefinierte Funktion";
    } </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> 存existieren,Aber nicht klassifiziert";
    }
} </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> 不存existieren";
}
?&gt;

Vollständiges Beispiel: Unterschied zwischen benutzerdefinierten Funktionen und integrierten Funktionen

 &lt;?php
</span><span><span class="hljs-comment">// Beispiel für benutzerdefinierte Funktion</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">'这Es ist eine benutzerdefinierte Funktion'</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">// Überprüfen Sie die integrierten Funktionen</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">// Überprüfen Sie benutzerdefinierte Funktionen</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">// 检查不存existieren函数</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> Es ist eine integrierte Funktion\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> Es ist eine benutzerdefinierte Funktion\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> 存existieren,Aber nicht klassifiziert\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> 不存existieren\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;

Führen Sie den obigen Code aus und Sie erhalten:

 strlen Es ist eine integrierte Funktion
my_custom_func Es ist eine benutzerdefinierte Funktion
non_exist_func 不存existieren

Zusammenfassen

  • Funktion_Exists () kann erkennen, ob eine Funktion definiert ist, kann jedoch nicht zwischen integrierten und benutzerdefinierten Funktionen unterscheiden.
  • Erhalten Sie alle Funktionen des Systems über get_defined_functions () , einschließlich integrierter bzw. benutzerdefinierter Funktionen.
  • Wenn wir diese beiden Funktionen kombinieren, können wir genau bestimmen, ob eine Funktion existiert und ob sie integriert oder angepasst ist.

Durch das Beherrschen der oben genannten Methoden können Sie die funktionsbezogene Logik in der PHP-Entwicklung flexibler behandeln, Konflikte oder wiederholte Definitionen vermeiden und die Code-Robustheit verbessern.