Kebolehcapaian Pembolehubah Global PHP
Tidak seperti kebanyakan bahasa pengaturcaraan, kod PHP tidak boleh mengakses terus pembolehubah yang ditakrifkan di luar fungsi. Salah tanggapan biasa timbul apabila cuba mendapatkan semula pembolehubah global di dalam fungsi, seperti yang ditunjukkan dalam kod berikut:
<code class="php"> $data = 'My data'; function menugen() { echo "[" . $data . "]"; } menugen();</code>
Mengejutkan ramai, output akan menjadi kurungan persegi kosong ([]) dan bukannya dijangka "Data saya." Artikel ini menyelidiki mekanisme asas di sebalik tingkah laku ini dan menyediakan penyelesaian untuk mengakses pembolehubah global dalam fungsi.
Pengisytiharan Pembolehubah Global
PHP menyelesaikan isu dengan memerlukan pengisytiharan eksplisit pembolehubah global dalam fungsi di mana ia akan digunakan. Kata kunci global berfungsi untuk tujuan ini, seperti yang dilihat dalam kod yang diubah suai di bawah:
<code class="php"> $data = 'My data'; function menugen() { global $data; // <-- Declares $data as global echo "[" . $data . "]"; } menugen();</code>
Dengan menambah baris ini, fungsi memberitahu PHP bahawa ia berhasrat untuk menggunakan pembolehubah global bernama $data. Tanpa pengisytiharan ini, PHP menganggap bahawa mana-mana pembolehubah yang tidak ditemui secara tempatan ialah pembolehubah tempatan dan memulakannya sedemikian. Oleh itu, output menjadi kosong.
Kaedah Akses Alternatif
Sebagai alternatif, pembolehubah global boleh diakses menggunakan tatasusunan $GLOBALS. Tatasusunan bersekutu ini menyimpan semua pembolehubah global dengan nama mereka sebagai kunci. Walaupun kaedah ini menyediakan cara untuk memanipulasi pembolehubah global, ia biasanya tidak digalakkan kerana potensi risiko keselamatan dan kerumitan dalam kebolehselenggaraan kod.
Mengelakkan Global
Dalam amalan pengaturcaraan moden , adalah amat disyorkan untuk mengelak daripada menggunakan pembolehubah global sama sekali. Sebaliknya, menghantar data ke dalam fungsi sebagai parameter lebih diutamakan untuk kod yang lebih bersih dan boleh diselenggara. Dalam contoh di atas, pendekatan ini akan kelihatan seperti:
<code class="php"> $data = 'My data'; function menugen($data) { // <-- Parameter declared echo "[" . $data . "]"; } menugen($data); // <-- Data passed during call</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Pembolehubah Global Di Dalam Fungsi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!