Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

王林
王林ke hadapan
2024-02-05 21:15:13723semak imbas

Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

Kandungan soalan

Dalam dokumentasi go-optik mereka berkata:

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

Adakah ok jika saya lulus konteks sebagai hujah fungsi seperti ini:

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

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

Adakah ini dianggap sebagai amalan yang tidak baik?

Saya kurang faham ayat ini:

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.

Jadi, jika saya telah menghantar respons kepada pelanggan, adakah nilai params akan digunakan semula? Digunakan semula oleh siapa? Oleh saya atau atas permintaan orang lain?

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

Jika nilai id ialah 911, adakah bermakna permintaan orang lain juga akan mendapat 911?

Apa maksudnya

will change below your feet

Siapa yang boleh menerangkannya secara terperinci untuk memudahkan pemahaman pemula seperti saya? Terima kasih...


Jawapan betul


Objek konteks sebenar boleh digunakan semula oleh rangka kerja selepas memanggil pengendali anda, jadi anda tidak boleh bergantung pada keadaannya selepas kembali daripada pengendali.

Adakah ok jika saya lulus konteks sebagai parameter fungsi seperti ini?

Ini tidak mengapa, selagi Search konteks tidak disimpan di tempat lain. Jika ia hanya menggunakan nilai dalam konteks untuk melakukan carian dan mengembalikan hasilnya, tidak mengapa.

Jadi, jika saya telah menghantar respons kepada pelanggan, adakah nilai params akan digunakan semula? Digunakan semula oleh siapa? Oleh saya atau atas permintaan orang lain?

Rangka kerja akan menggunakan semula objek konteks sebenar semasa mengendalikan permintaan kemudian.

Apakah maksud "perubahan akan berlaku di bawah kaki anda"?

Jika anda tidak mengikut nasihat di atas dan sebaliknya menyimpan rujukan kepada konteks selepas kembali daripada pengendali, nilai dalam konteks itu akan berubah secara tidak dijangka kerana rangka kerja menggunakan konteks tersebut untuk permintaan baharu.

Atas ialah kandungan terperinci Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam