Betapapun hati-hatinya kita ketika menulis program, kesalahan tidak bisa dihindari. Kesalahan ini biasanya membingungkan compiler PHP. Pesan kesalahan kompiler tidak hanya tidak berguna tetapi sering kali membuat frustrasi jika pengembang tidak memahami maksudnya.
Saat mengkompilasi skrip PHP, kompiler PHP melakukan yang terbaik untuk melaporkan masalah pertama yang ditemuinya. Hal ini menimbulkan masalah: PHP hanya dapat mengenali kesalahan ketika kesalahan itu terjadi (masalah ini akan dijelaskan secara rinci nanti di artikel ini). Karena alasan inilah penyusun menunjukkan bahwa garis yang salah mungkin tampak benar secara sintaksis di permukaan, atau mungkin garis yang tidak ada sama sekali!
Pemahaman yang lebih baik tentang pesan kesalahan dapat secara signifikan mengurangi waktu yang dihabiskan untuk mengidentifikasi dan memperbaiki kesalahan. Oleh karena itu, dalam artikel ini, saya akan mencoba menjelaskan berbagai jenis pesan kesalahan PHP dan cara memahami dengan benar arti dari berbagai pesan kesalahan selama proses pengembangan.
Konten yang dijelaskan dalam artikel ini tidak ada hubungannya dengan versi PHP yang Anda gunakan, karena berbagai kesalahan yang dijelaskan dalam artikel ini tidak terbatas pada kesalahan tertentu pada versi tertentu. Selain itu, kami berasumsi bahwa Anda adalah programmer junior atau menengah dan telah terlibat dalam pemrograman selama setengah tahun atau satu tahun.
Cara Kerja Kompiler
Untuk memahami mengapa kompiler melaporkan kesalahan pada baris tertentu, Anda harus terlebih dahulu memahami mekanisme yang digunakan kompiler dalam mem-parsing kode PHP. Saya tidak akan membahasnya secara detail di artikel ini, tetapi kita akan membahas beberapa konsep sederhana yang lebih mungkin menimbulkan kesalahan.
Deklarasi variabel
Jika Anda mendeklarasikan sebuah variabel dalam sebuah pernyataan, metode spesifiknya adalah sebagai berikut:
$variable = 'value';
Kompilator pertama-tama mencari nilai di bagian kanan pernyataan (yaitu, segala sesuatu di sisi kanan yang sama tanda). Di beberapa buku pemrograman, ini direpresentasikan sebagai RHS (setengah kanan) dari pernyataan tersebut. Bagian pernyataan inilah yang sering menimbulkan kesalahan. Jika Anda menggunakan sintaks yang salah, Anda akan mendapatkan kesalahan penguraian.
Kesalahanpenguraian
: Kesalahan penguraian, T_WHILE yang tidak terduga di c:\program files\apache group\apache\htdocs\script.php on line 19
Kesalahan penguraian datang satu demi satu setiap kali kesalahan sebelumnya ditentukan Terus muncul. Karena PHP berhenti mengeksekusi skrip setelah kesalahan penguraian pertama, melakukan debug dan memperbaiki rangkaian kesalahan ini seringkali sangat melelahkan.
Selain itu, kesalahan penguraian hanya memiliki sedikit informasi, hampir tidak ada pelaporan nomor baris tempat kesalahan terjadi. Alasan spesifiknya adalah ketika terjadi kesalahan, kompiler menentukan bahwa sintaks dari beberapa baris harus terlihat valid hingga menemukan sintaks yang tidak valid. Kasus yang paling mungkin adalah kata-kata yang telah ditentukan sebelumnya digunakan dalam ekspresi, misalnya
; / Buruk ? while adalah kata yang telah ditentukan sebelumnya dan tidak dapat diberi nilai.
Kata-kata yang telah ditentukan sebelumnya mencakup sementara, fungsi, dll. Jika PHP menggunakan kegunaan untuk mengevaluasi kode Anda ini, PHP akan melaporkan lebih banyak kesalahan, yang tidak dapat Anda tanggung.
Mengenai masalah ini, contoh berikut mungkin bisa membantu Anda. Silakan berkonsultasi dan membaca kode PHP yang ditunjukkan di bawah ini:
<?php
$b = suatu nilai
if($b == suatu nilai){
cetak Halo dunia!;
}
?>
Kesalahannya ada pada baris $b = (tidak ada titik koma di akhir pernyataan), jadi kesalahannya seharusnya adalah kesalahan penguraian: tidak ada titik koma di baris 3, bukan? Seharusnya tidak ditentukan berdasarkan parser:
Parse error: parse error, T_IF tak terduga di c:\program files\apache
group\apache\htdocs\ereg2.php on line 4
Pada baris 4, sintaks pernyataan if() sudah benar. Jadi, apa yang membingungkan compiler? Petunjuknya adalah bagian T_IF yang tidak terduga. Ketika kesalahan T_??? yang tidak terduga terjadi, artinya: kompiler menemukan bahwa kata yang telah ditentukan muncul pada posisi yang tidak seharusnya muncul. T_IF mewakili if(), T_WHILE mewakili while(), T_FOR mewakili for(), dll.
Untungnya, penyebab beberapa kesalahan juga sederhana:
pernyataan tidak diakhiri dengan titik koma (;), seperti contoh di atas. Tanda kutip tidak ada pada string.
Beberapa Kesalahan Umum Lainnya
Kesalahan paling umum yang saya lihat adalah ketika tidak menutup suatu fungsi atau loop dengan tanda kurung kurawal ( } ).
Kode spesifiknya adalah sebagai berikut:
function UselessFunction() {
untuk($i < 0; $i < 10; $i++){
}
Kesalahan berikut akan dihasilkan:
Kesalahan parse: kesalahan parse, $ tak terduga di c:\program files\apache
group\apache\htdocs\ereg2.php on line 9
Karena fungsi UselessFunction tidak diakhiri dengan tanda kurung kurawal (}), kompiler PHP terus mencari tanda kurung kurawal penutup hingga mencapai akhir file. Karena kompiler tidak menemukan kurung kurawal yang cocok, kompilator melaporkan kesalahan akhir file.
Jika hierarki kode dicerminkan dengan benar, pesan kesalahan akan menjadi sangat jelas. Jika struktur hierarki kode tidak ditandai, hampir tidak mungkin untuk menemukan apa yang pada akhirnya terlupakan. Jadi ingat, pastikan untuk menunjukkan hierarki kode Anda. Tombol Tab memudahkan hal ini. Pengembang selanjutnya juga akan lebih mudah memahami kerangka kode dan memodifikasinya.
Kesalahan MySQL
Pesan kesalahan lain yang sangat menjengkelkan adalah kesalahan MySQL yang paling umum, yang sering menyebabkan sakit kepala bagi pengguna PHP baru: Peringatan: Argumen yang diberikan bukan sumber daya hasil MySQL yang valid di...
Baris dengan kesalahan yang dilaporkan di atas Mungkin:
sementara ($row = mysql_fetch_array($result)) {
Parameter $result bukan sumber daya yang valid. Dalam bahasa inggris artinya mysql_fetch_array tidak dapat diproses karena query gagal. Sintaks kueri mana pun tidak valid (Anda harus menyalin-menempelkan kueri ke referensi konsol MySQL untuk mengujinya), atau koneksi ke database gagal (dalam hal ini Anda harus memeriksa ulang nama pengguna, kata sandi, dll.).
Mencegah Kesalahan
Sebagai langkah pertama, pembuat kode cerdas dapat mengambil langkah-langkah berikut untuk menghilangkan kesalahan berikut:
· Jangan berpikir untuk menambahkan titik koma di akhir setiap pernyataan - ini harus menjadi kebiasaan.
· Selalu tunjukkan hierarki kode Anda bila memungkinkan. Ini akan memungkinkan Anda melihat apakah Anda lupa menambahkan tanda kurung kurawal di tempat seperti jika ada panggilan atau di akhir fungsi.
· Silakan gunakan editor dengan penyorotan sintaksis (seperti HTML-Kit). Dengan bantuan editor seperti itu, Anda dapat menentukan apakah Anda lupa menambahkan kutipan, apakah Anda kehilangan titik koma, dll.
Kesimpulan
Pada artikel ini, kami memiliki pemahaman tertentu tentang beberapa kesalahan yang tampaknya tidak berarti yang dapat dilaporkan oleh kompiler PHP. Kita perlu menerapkan apa yang kita pelajari tentang cara menghindari kesalahan dan cara memperbaikinya jika terjadi. Debugging adalah salah satu bagian terpenting dari pekerjaan seorang pengembang. Meningkatkan efisiensi debugging dapat mempercepat kemajuan seluruh pekerjaan dan mempersingkat waktu yang diperlukan untuk menyelesaikan suatu proyek. Hal ini juga dapat secara signifikan mengurangi tekanan mental yang disebabkan oleh kegagalan kode.