Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt der strikte Modus von PHP die Warnung aus, dass nur Variablen als Referenz übergeben werden sollten?

Warum gibt der strikte Modus von PHP die Warnung aus, dass nur Variablen als Referenz übergeben werden sollten?

DDD
DDDOriginal
2025-01-01 13:55:19481Durchsuche

Why Does PHP's Strict Mode Warn

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 :

  1. Methodensignatur ändern:Ändern Sie die Signatur der Methode, die einen Referenzparameter annimmt, so dass sie nicht mehr verwendet wird it.
  2. Verwenden Sie eine Zwischenvariable: Erstellen Sie eine Zwischenvariable, um den Rückgabewert der Methode zu speichern, die keinen Referenzparameter verwendet. Übergeben Sie dann die Zwischenvariable als Referenz.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn