Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Get_Defined_Constants (), um Konstanten schnell zu lokalisieren, um Positionen zu definieren (indirekter Trick)

Verwenden Sie Get_Defined_Constants (), um Konstanten schnell zu lokalisieren, um Positionen zu definieren (indirekter Trick)

M66 2025-06-02

Wir stoßen häufig auf verschiedene vordefinierte Konstanten, wenn wir große Projekte entwickeln oder Legacy -Systeme mithilfe von PHP aufrechterhalten. Sie können von Frameworks, Bibliotheken oder Konfigurationsdateien festgelegt werden, und Sie werden häufig verwirrt, wenn Sie Ihren Code debuggen oder refaktorieren und wissen möchten, wo diese Konstanten definiert sind.

PHP bietet eine integrierte Funktion get_defined_constants () , in der alle definierten Konstanten im aktuellen Skript aufgeführt sind. Leider wird Ihnen nicht direkt angegeben, welche Datei oder Zeile eine Konstante definiert ist. In diesem Artikel wird eine einfache indirekte Technik vorgestellt, mit der Sie die Quelle einer bestimmten Konstante mit Get_Defined_Constants () schnell finden können.

1. Überprüfung der Grundnutzung

get_defined_constants () gibt ein Array zurück, das die Namen und Werte aller aktuellen Konstanten enthält:

 print_r(get_defined_constants());

Das Ausgangsergebnis ist ähnlich:

 Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [MY_CUSTOM_CONSTANT] => abc123
    ...
)

Dies kann jedoch nicht den Bedürfnissen der "Rückverfolgbarkeit" erfüllen.

2. Indirekte Fähigkeiten: Verwenden Sie differentielle Positionierungsquellen von Konstanten

Wir können die Idee des "Differenzvergleichs" verwenden, um zu analysieren, in welcher Datei eine Konstante definiert ist:

Die Schritte sind wie folgt:

  1. Zeichnen Sie Constant Snapshot A : Rufen Sie Get_Defined_Constants () einmal vor, bevor Sie die Zieldatei einfügen.

  2. Objektdatei einschließen : Laden Sie Dateien, von denen Sie vermuten, dass Konstanten über Forderung oder einbezogen werden .

  3. Nehmen Sie konstant Snapshot B : Rufen Sie nach Einbeziehung get_defined_constants () erneut auf.

  4. Differenzanalyse : Wenn Sie die Unterschiede zwischen Schnappschüssen A und B vergleichen, können Sie wissen, welche Konstanten in dieser Datei eingeführt wurden.

Hier ist ein vollständiges Beispiel:

 <?php

// Erster Schritt:Notieren Sie die anfängliche konstante Liste
$before = get_defined_constants();

// Schritt 2:Stellen Sie Dokumente vor, die Sie vermuten
require_once 'https://m66.net/includes/config.php';

// Schritt 3:Notieren Sie die importierte konstante Liste
$after = get_defined_constants();

// Schritt 4:Analysieren Sie neu eingeführte Konstanten
$newConstants = array_diff_assoc($after, $before);

echo "Die neu definierten Konstanten sind:\n";
print_r($newConstants);

Nach dem Ausführen dieses Codes sehen Sie, welche neuen Konstanten in config.php definiert sind. Obwohl wir die "Definitionszeilennummer" nicht direkt erhalten können, kann klar angegeben werden, dass diese Datei diese Konstanten einführt.

3.. Erweiterte Verwendung: präzise Positionierung mit Debugging -Tools

Wenn Sie bestätigt haben, dass Konstanten in einer Datei definiert sind, können Sie mit Hilfe der "Global Search" -Funktion im Editor oder der IDE (wie PHPSTORM) schnell nach dem Wort definieren ('my_constant', um genau in die definierte Position zu springen.

Darüber hinaus können Debugger wie Xdebug nach der Einstellung von Haltepunkten auch die Registrierung von Konstanten in Echtzeit überwachen, aber das gehört zu einer fortgeschritteneren Nutzungskategorie, und dieser Artikel wird vorerst nicht erweitert.

4. Zusammenfassung

Obwohl GET_DEFINED_CONSTANTS () Ihnen nicht direkt sagen kann, "wer eine Konstante in welcher Zeile definiert", können wir die Quelldatei der Konstante schnell bestimmen. Diese Technik ist besonders geeignet für:

  • Fehlerbehebung bei der Quelle mysteriöser Konstanten

  • Analysieren der globalen Verschmutzung, die von externen Bibliotheken eingeführt wurde

  • Überwachung konstanter Lecks bei automatisierten Tests

Sie können diese Idee als allgemeines Debugging -Tool zusammenfassen, sie schnell positionieren, wenn Sie ähnliche Probleme treffen, und das doppelte Ergebnis mit der halben Anstrengung erzielen.