Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mod Ketat PHP Memberi Amaran 'Hanya Pembolehubah Perlu Dilalui Melalui Rujukan'?

Mengapa Mod Ketat PHP Memberi Amaran 'Hanya Pembolehubah Perlu Dilalui Melalui Rujukan'?

DDD
DDDasal
2025-01-01 13:55:19481semak imbas

Why Does PHP's Strict Mode Warn

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 :

  1. Ubah suai Tandatangan Kaedah: Tukar tandatangan kaedah yang mengambil parameter rujukan untuk tidak menggunakannya lagi.
  2. Gunakan Pembolehubah Perantaraan: Cipta pembolehubah perantaraan untuk memegang nilai pulangan kaedah yang tidak menggunakan parameter rujukan. Kemudian, luluskan pembolehubah perantaraan melalui rujukan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn