Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt der strikte Modus von PHP die Warnung aus, dass nur Variablen als Referenz übergeben werden sollten?
Strenge Standards: Die Warnung „Nur Variablen sollten als Referenz übergeben werden“ verstehen
In PHP erzwingt der strikte Modus bestimmte Programmierpraktiken zur Verbesserung Codequalität und -konsistenz. Eine dieser Vorgehensweisen besteht darin, die Übergabe nicht variabler Werte als Referenz zu vermeiden. Diese Frage untersucht die Gründe für diese Warnung und bietet Lösungen, um sie zu vermeiden.
Das Problem: Referenzparameter und Rückgabewerte
Bedenken Sie den folgenden Codeausschnitt:
$el = array_shift($instance->find(..))
Dieser Code löst die strenge Standardwarnung „Nur Variablen sollten als Referenz übergeben werden“ aus. Der folgende Code tut dies jedoch nicht:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
Um dieses Verhalten zu verstehen, müssen wir uns mit der Referenzbehandlung von PHP befassen. Wenn eine Referenz an eine Funktion übergeben wird, werden alle Änderungen, die an der von diesem Parameter referenzierten Variablen vorgenommen werden, in der Originalvariablen widergespiegelt. Im ersten Codeausschnitt gibt $instance->find(...) ein Array zurück, das keine Variable ist. Die Übergabe dieses Arrays als Referenz löst die Warnung aus.
Die Ausnahme verstehen
Diese Ausnahme kann jedoch irreführend sein. Im zweiten Codeausschnitt gibt die Funktion get_arr() ein Array zurück, was impliziert, dass eine Referenz darauf übergeben werden kann. Allerdings verwendet die Funktion selbst keinen Referenzparameter, sodass die Warnung vermieden wird.
Lösungen zur Vermeidung der Warnung
Um die Warnung zu beseitigen, gibt es zwei Möglichkeiten :
Beispiel:
function get_arr(){ return array(1, 2); } $inter = get_arr(); $el = array_shift($inter);
Durch die Verwendung der Zwischenvariablen $inter vermeiden wir die Übergabe des Rückgabewerts von get_arr() direkt durch Referenz, wodurch die Warnung zu strengen Standards aufgelöst wird.
Das obige ist der detaillierte Inhalt vonWarum gibt der strikte Modus von PHP die Warnung aus, dass nur Variablen als Referenz übergeben werden sollten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!