Mengatasi Masalah Undefined Index di PHP 5
<pre>Bagi yang beralih dari PHP 4.x ke PHP 5.x mungkin pernah menjumpai peringatan seperti ini:
Notice: Use of undefined constant mod – assumed ‘mod’ in /var/www/blogsaya/index.php on line 7
atau seperti ini:
Notice: Undefined index: mod in /var/www/blogsaya/index.php on line 7
atau seperti ini:
Notice: Undefined variable: mod in /var/www/blogsaya/index.php on line 8
Ketiganya hanyalah pesan peringatan (notice), bukan kesalahan (error). Namun nampak tidak elegan jika pesan seperti itu muncul di halaman website kita. Untuk menyembunyikan pesan peringatan tersebut cukup dengan menambahkan sebaris kode berikut di bagian paling awal kode PHP.
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
Kode tersebut hanya akan menyembunyikan semua pesan peringatan level Notice dan Warning yang muncul, pesan kesalahan yang lain, misal error, tetap muncul.
Namun tentu saja menyembunyikan pesan peringatan bukan solusi yang baik. Notice message tersebut muncul karena penanganan register global di PHP 5.x yang sedikit berbeda dengan PHP 4.x, dan juga ada variable atau konstanta yang tidak diinisialisasi sebelum digunakan. Pelanggaran yang umum dalam bahasa pemrograman PHP tetapi penegakan hukumnya kurang ketat.
Perhatikan contoh berikut:
echo $_POST[mod];
echo $mod;
Kedua pesan pertama muncul karena penggunaan register global yang kurang tepat, seperti pada contoh di atas pada baris ke-7, seharusnya ditulis seperti berikut:
echo $_POST['mod'];
Begitu kesalahan pertama diperbaiki, pesan yang pertama hilang namun yang kedua tidak. Itu terjadi
if (isset($_POST['mod']))
echo $_POST['mod'];
Lalu yang terakhir mudah saja kita selesaikan, tinggal kita inisialisasi saja variable $mod dengan string kosong seperti berikut:
$mod = '';
echo $mod;
Atau saya lebih suka menggunakan operator ternary (bukan operator tersier) seperti berikut:
$mod = isset($_POST['mod']) ? $_POST['mod'] : '';
Dengan menggunakan operator ternary ini lebih saya sukai karena bisa sekaligus menyelesaikan ketiga permasalahan di atas. Operator ternary adalah operator yang memiliki tiga buah argumen atau operasi matematika, yang dipisahkan dengan tanda “?:”. Pernyataan di atas berarti: jika variable global $_POST['mod'] ada isinya, maka $_POST['mod'] akan disalin ke $mod , jika tidak maka $mod akan berisi string kosong.
Tulisan ini adalah kategori baru yang ingin saya catat di blog, yaitu tentang troubleshooting (penyelesaian masalah) dalam pemrograman. Troubleshooting adalah salah satu aspek paling penting dalam mempelajari bahasa pemrograman apapun.</pre>
Kategori
Blogroll
- Masih Kosong