Aktueller Standort: Startseite> Neueste Artikel> Wie man ungenutzte Konstanten herausfiltert

Wie man ungenutzte Konstanten herausfiltert

M66 2025-05-31

In der PHP -Projektentwicklung verwenden wir häufig Define oder Const, um Konstanten zu definieren. Während das Projekt weiter expandiert, wird die Anzahl der Konstanten auch dramatisch zunehmen. Im Laufe der Zeit können einige Konstanten vergessen und nicht mehr von einem Code verwiesen werden. Diese nicht verwendeten Konstanten erhöhen die Wartungskosten und verringern die Lesbarkeit und die Wartbarkeit der Code. Um die Codequalität zu verbessern, können wir die Funktion GET_DEFINED_CONSTANT in Kombination mit statischen Analysemethoden verwenden, um ungenutzte Konstanten zu identifizieren und zu reinigen.

Was ist Get_Defined_Constants ?

get_defined_constants ist eine der integrierten Funktionen von PHP, mit der alle definierten Konstanten im aktuellen Skript zurückgegeben werden (einschließlich benutzerdefinierter Konstanten und interner PHP-Konstanten). Diese Funktion kann einen booleschen Parameter akzeptieren, und wenn der Parameter wahr ist, wird ein mehrdimensionales Array zurückgegeben, das durch Klassifizierung gruppiert ist. Andernfalls gibt es ein flaches Array zurück.

Beispiel:

 print_r(get_defined_constants(true));

Das Prinzip der Filterung ungenutzter Konstanten

get_defined_constants sagt uns nicht direkt, ob eine Konstante verwendet wird. Wir können jedoch die folgenden zwei Schritte kombinieren, um dieses Ziel indirekt zu erreichen:

  1. Ruft alle benutzerdefinierten konstanten Namen ab.

  2. Durch den Projektcode iterieren und prüfen, ob auf diese Konstanten verwiesen werden.

  3. Marke nicht überfüllte Konstanten als "nicht genutzt".

Beispielimplementierung

Hier ist eine einfache Implementierungsidee, vorausgesetzt, Sie behalten ein kleines und mittelgroßes Projekt beibehalten:

Schritt 1: Sammeln Sie alle benutzerdefinierten Konstanten

 $allConstants = get_defined_constants(true);

$userConstants = isset($allConstants['user']) ? $allConstants['user'] : [];

Schritt 2: Überqueren Sie das Projektverzeichnis und finden Sie konstante Referenzen

 $projectDir = __DIR__ . '/src'; // Projektquellcode -Verzeichnis
$usedConstants = [];

$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($projectDir));
foreach ($files as $file) {
    if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) === 'php') {
        $content = file_get_contents($file->getPathname());
        foreach ($userConstants as $name => $value) {
            // Einfache String -Suche,Sie können auch die reguläre Übereinstimmungsgenauigkeit verwenden
            if (strpos($content, $name) !== false) {
                $usedConstants[$name] = true;
            }
        }
    }
}

Schritt 3: Filter nicht verwendeter Konstanten

 $unusedConstants = array_diff_key($userConstants, $usedConstants);

echo "Liste der nicht verwendeten Konstanten:\n";
print_r(array_keys($unusedConstants));

Zusätzliche Vorschläge

  • Für große Projekte wird empfohlen, reguläre Ausdrücke zu verwenden, um Fehleinschätzungen zu vermeiden, wie z. B. Interferenzen, wenn Variablennamen den konstanten Namen ähnlich sind.

  • Es wird empfohlen, mit Code -statischen Analyse -Tools (wie Phpstan, Psalm) zusammenzuarbeiten, um mehrere Überprüfung zu erhalten.

  • Vor dem Entfernen von Konstanten wird empfohlen, wiederholt in der Entwicklungsumgebung zu testen, um versehentlich konstanten zu löschen, auf die dynamisch verwiesen wird.

Praktische Anwendungsszenarien

Angenommen, Ihr Projekt definiert die folgenden Konstanten:

 define('API_URL', 'https://m66.net/api/');
define('DEBUG_MODE', true);
define('UNUSED_CONST', 12345);

Nach der Skriptanalyse wurde festgestellt, dass nicht verwendet wird, dass nicht verwendet wird.

Abschluss

Obwohl PHP keine integrierten Funktionen hat, um unbenutzte Konstanten direkt zu finden, können wir dies dennoch durch die Funktion von GET_DEFINED_CONSTANT und einfacher Code-Scan-Logik erreichen. Das rationale Management von Konstanten hilft, die Lesbarkeit und Wartbarkeit der Code zu verbessern, und spiegelt auch die Reife und Standardisierung eines Projekts wider.