Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet es, eine Variable zu haben, die nur innerhalb des Handlers gültig ist?

Was bedeutet es, eine Variable zu haben, die nur innerhalb des Handlers gültig ist?

王林
王林nach vorne
2024-02-05 21:15:13761Durchsuche

Was bedeutet es, eine Variable zu haben, die nur innerhalb des Handlers gültig ist?

Frageninhalt

In der go-optischen Dokumentation heißt es:

as a rule of thumb, you must only use context values within the
handler, and you must not keep any references

Ist es in Ordnung, wenn ich den Kontext als Funktionsargument wie folgt übergebe:

func getlist(c *fiber.ctx) error {
   result, err := user.search(c)
}

func search(c *fiber.ctx) (user, err) {
   id := c.params("id")
}

Wird dies als schlechte Praxis angesehen?

Ich verstehe diesen Satz nicht ganz:

as soon as you return from the handler, any values you have obtained
from the context will be re-used in future requests and will change
below your feet.

Wenn ich also die Antwort an den Client gesendet habe, wird der Wert von params wiederverwendet? Von wem wiederverwendet? Von mir oder auf Wunsch einer anderen Person?

func getlist(c *fiber.ctx) error {
   id := c.params("id") // 911
   return c.sendstring("hello, world!")
}

Wenn der Wert von id 911 ist, bedeutet das, dass die Anfragen anderer Leute auch 911 erhalten?

Was bedeutet das

will change below your feet

Wer kann es im Detail erklären, damit es für einen Anfänger wie mich leichter verständlich ist? Danke...


Richtige Antwort


Das eigentliche Kontextobjekt kann vom Framework nach dem Aufruf Ihres Handlers wiederverwendet werden, sodass Sie sich nach der Rückkehr vom Handler nicht auf seinen Zustand verlassen können.

Ist es in Ordnung, wenn ich den Kontext so als Funktionsparameter übergebe?

Das ist in Ordnung, solange Search der Kontext nicht woanders gespeichert ist. Wenn es für die Suche einfach den Wert im Kontext verwendet und die Ergebnisse zurückgibt, ist das in Ordnung.

Wenn ich also die Antwort an den Client gesendet habe, wird der Wert von params wiederverwendet? Von wem wiederverwendet? Von mir oder auf Wunsch einer anderen Person?

Das Framework verwendet das eigentliche Kontextobjekt wieder, während es spätere Anfragen bearbeitet.

Was bedeutet „Veränderungen werden unter Ihren Füßen passieren“?

Wenn Sie die obigen Ratschläge nicht befolgen und stattdessen nach der Rückkehr vom Handler einen Verweis auf den Kontext beibehalten, ändern sich die Werte in diesem Kontext unerwartet, da das Framework diesen Kontext für neue Anforderungen verwendet.

Das obige ist der detaillierte Inhalt vonWas bedeutet es, eine Variable zu haben, die nur innerhalb des Handlers gültig ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen