Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mod Ketat PHP Memberi Amaran 'Hanya Pembolehubah Perlu Dilalui Melalui Rujukan'?
Standard Tegas: Memahami Amaran "Hanya Pembolehubah Harus Dilalui Melalui Rujukan"
Dalam PHP, mod ketat menguatkuasakan amalan pengaturcaraan tertentu untuk menambah baik kualiti dan ketekalan kod. Satu amalan sedemikian ialah mengelak daripada menghantar nilai bukan pembolehubah melalui rujukan. Soalan ini meneroka sebab di sebalik amaran ini dan menyediakan penyelesaian untuk mengelakkannya.
Isu: Parameter Rujukan dan Nilai Pulangan
Pertimbangkan coretan kod berikut:
$el = array_shift($instance->find(..))
Kod ini mencetuskan amaran piawaian yang ketat "Hanya pembolehubah harus diluluskan oleh rujukan." Walau bagaimanapun, kod berikut tidak:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
Untuk memahami tingkah laku ini, kita perlu mendalami pengendalian rujukan PHP. Apabila rujukan dihantar kepada fungsi, sebarang perubahan yang dibuat kepada pembolehubah yang dirujuk oleh parameter itu ditunjukkan dalam pembolehubah asal. Dalam coretan kod pertama, $instance->find(...) mengembalikan tatasusunan, yang bukan pembolehubah. Melepasi tatasusunan ini dengan rujukan mencetuskan amaran.
Memahami Pengecualian
Walau bagaimanapun, pengecualian ini boleh mengelirukan. Dalam coretan kod kedua, fungsi get_arr() mengembalikan tatasusunan, yang membayangkan bahawa rujukan boleh dihantar kepadanya. Walau bagaimanapun, fungsi itu sendiri tidak menggunakan parameter rujukan, jadi amaran dielakkan.
Penyelesaian untuk Mengelakkan Amaran
Untuk menghapuskan amaran, terdapat dua pilihan :
Contoh:
function get_arr(){ return array(1, 2); } $inter = get_arr(); $el = array_shift($inter);
Dengan menggunakan pembolehubah perantaraan $inter, kita mengelak daripada melepasi nilai pulangan get_arr() terus melalui rujukan, menyelesaikan amaran standard yang ketat.
Atas ialah kandungan terperinci Mengapa Mod Ketat PHP Memberi Amaran 'Hanya Pembolehubah Perlu Dilalui Melalui Rujukan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!