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.
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!
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 variabel dalam sebuah pernyataan, metode spesifiknya adalah sebagai berikut:
$variabel = 'nilai';
Kompiler pertama-tama mengevaluasi bagian kanan pernyataan (yaitu, segala sesuatu di sebelah kanan tanda sama dengan). 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.
penguraian
: Kesalahan penguraian, T_WHILE yang tidak terduga di c:program filesapache groupApachehtdocsscript.PHP pada baris 19.
Kesalahan penguraian terus muncul satu demi satu setiap kali kesalahan sebelumnya ditentukan. 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 tampak 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 saat melakukan 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 = "nilai tertentu"
if($b == "nilai tertentu"){
cetak "Halo dunia!";
}
?>
Errornya ada pada baris "$b=" (tidak ada titik koma di akhir pernyataan), jadi errornya seharusnya "Parse error: missing semicolon on line 3" kan? Daripada menilai dari parser:
Parse error: parse error, T_IF tak terduga di c:program filesapache
grupapachehtdocsereg2.PHP pada baris 4
Pada baris 4, sintaks pernyataan if() sudah benar. Jadi, apa yang membingungkan compiler? Petunjuknya adalah bagian "T_IF tak terduga". Ketika terjadi kesalahan "T_ tak terduga???" berarti: kompiler menemukan bahwa kata yang telah ditentukan muncul pada posisi yang seharusnya tidak 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 pada 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 filesapache
grupApachehtdocsereg2.PHP pada baris 9
Karena fungsi UselessFunction tidak diakhiri dengan tanda kurung kurawal (}), compiler 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 mengganggu adalah kesalahan MySQL yang paling umum, yang sering menyebabkan sakit kepala bagi pengguna baru PHP: Peringatan: Argumen yang diberikan bukan sumber hasil MySQL yang valid di...
Baris yang salah yang dilaporkan di atas mungkin:
while($baris = MySQL_fetch_array($hasil)) {
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.
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.