it-swarm.com.de

Ist es besser, einer Variablen Funktionen wie get_the_id () zuzuweisen, wenn sie mehrfach verwendet wird?

Wenn ich get_the_ID() in meiner Datei mehrmals aufrufe, ist es dann besser, einer Variablen get_the_ID() zuzuweisen?


// Call get_the_ID() directly
function_that_needs_post_ID( get_the_ID() );    
another_function_that_needs_post_ID( get_the_ID() );

VS

// Assign get_post_ID() to variable
$post_id = get_the_ID();    
function_that_needs_post_ID( $post_id );
another_function_that_needs_post_ID( $post_id);
1
Swen

Ja, es ist immer besser, das Ergebnis eines Funktionsaufrufs in einer privaten Variablen zu speichern. Der Grund ist aber nicht die Leistung.

Zuverlässigkeit

In Ihrem Beispiel rufen Sie eine Funktion auf, die intern auf eine globale Variable ($post) zugreift. Eine globale Variable kann jederzeit überschrieben werden, sodass Sie möglicherweisezwei verschiedene Post-IDserhalten, da die Variable zwischen Ihren beiden Aufrufen durch einen anderen Code geändert wurde.

Konsistenz

Die Funktion get_the_ID() gibt entweder eine positive Ganzzahl oder einen Booleschen Wert (false) zurück. Das ist schrecklich, weil es Sie zwingt, entweder den Wert in eine Ganzzahl umzuwandeln, wenn Sie nach "ifless" Code streben , oder Sie müssen entscheiden, was nach jedem Aufruf erneut ausführen, sodass Sie eine Menge sich wiederholenden Codes erhalten.

Alternative Implementierung

Ich würde vorschlagen, dass Sie Ihre Funktionen Methoden einer Klasse machen, dann die ID im Konstruktor übergeben (oder einrichten) und intern speichern. Dadurch wird die statische Abhängigkeit verringert, und falls WordPress diesen Teil jemals ändert, müssen Sie nur einen Teil des Codes reparieren.


Das Leistungsproblem mit get_the_ID() ist in WP_Post::filter() verborgen. Aber das ist so gering, dass Sie es ignorieren können.

4
fuxia