Rumah > Soal Jawab > teks badan
P粉6396675042023-08-24 12:44:02
Saya rasa topik ini sudah terlalu dibincangkan/terlalu rumit. Menggunakan IDE ialah cara untuk mengelakkan sepenuhnya sebarang ralat sintaks. Saya juga akan mengatakan bahawa bekerja tanpa IDE adalah tidak profesional. kenapa? Kerana IDE moden menyemak sintaks anda selepas setiap aksara yang anda taip. Apabila anda mengekod dan keseluruhan baris bertukar merah dan pemberitahuan amaran besar menunjukkan jenis tepat dan lokasi tepat ralat sintaks, maka tidak perlu mencari penyelesaian lain.
Anda (dengan berkesan) tidak akan menghadapi kesilapan tatabahasa lagi kerana anda akan melihatnya dengan betul semasa anda menaip. secara jujur.
IDE hebat dengan semakan sintaks (semua tersedia untuk Linux, Windows dan Mac):
P粉0685109912023-08-24 09:05:03
PHP kepunyaan C style dan Imperative bahasa pengaturcaraan. Ia mempunyai peraturan sintaks yang ketat yang tidak boleh dipulihkan apabila simbol atau pengecam yang salah tempat ditemui. Ia tidak dapat meneka niat pengekodan anda.
Terdapat beberapa langkah berjaga-jaga asas yang sentiasa boleh anda ambil:
Gunakan lekukan kod yang betul, atau pakai mana-mana gaya pengekodan lanjutan. Kebolehbacaan menghalang penyelewengan.
Gunakan IDEatau editor untuk PHP dengan penyertaan sintaks. Ini juga membantu dengan baki kurungan/kurungan.
Baca Rujukan Bahasa dan contoh dalam manual. Selepas dua kali, anda menjadi mahir.
Mesej ralat sintaks biasa adalah seperti berikut:
Ia menyenaraikan kemungkinan kesilapan tatabahasa. Sila lihat nama fail dan nombor talian yang disebutkan.
A T_STRING
nama seperti menerangkan pengendalian terakhir simbol yang tidak dapat dihuraikan oleh penghurai/penanda. Walau bagaimanapun, ini tidak semestinya punca ralat sintaks.
melihat baris kod sebelumnya. Selalunya, ralat sintaks hanyalah kemalangan yang berlaku sebelum ini. Nombor baris ralat adalah tepat di mana penghurai akhirnya berhenti memproses segala-galanya.
Terdapat banyak cara untuk mengecilkan dan menyelesaikan isu tatabahasa.
Buka fail sumber yang disebutkan. Lihat baris kod yang disebutkan.
Dengan rentetan lari dan pengendali yang salah letak, biasanya di sinilah anda mencari pelakunya.
Baca baris dari kiri ke kanan dan bayangkan apa yang dilakukan oleh setiap simbol.
Anda juga perlu menyemak baris sebelumnya dengan lebih kerap.
Secara khusus, koma bertitik ;
tiada di hujung/penyataan baris sebelumnya. (Sekurang-kurangnya dari perspektif gaya.)
Jika {
代码块}
tidak ditutup atau bersarang dengan betul, anda mungkin perlu menyiasat kod sumber dengan lebih lanjut. Gunakan lekukan kod yang betul untuk memudahkan.
Lihat Mewarna Tatabahasa!
Rentetan, pembolehubah dan pemalar semuanya harus mempunyai warna yang berbeza.
Operator+-*/.
juga harus diwarnakan secara berbeza. Jika tidak, mereka mungkin berada dalam persekitaran yang salah.
Jika anda mendapati bahawa pewarnaan rentetan anda memanjang terlalu jauh atau terlalu pendek, anda telah menemui penanda rentetan "
或 '
penghujung yang tidak terlepas atau tiada.
Dua tanda baca bersebelahan dengan warna yang sama juga boleh bermakna masalah. Biasanya, pengendali bersendirian jika ia tidak diikuti dengan ++
、--
atau kurungan. Dalam kebanyakan kes, dua rentetan/pengecam yang disambungkan secara langsung adalah tidak betul.
Ruang kosong ialah kawan anda. Ikuti sebarang gaya pengekodan.
menambah baris baharu antara pengendali atau pemalar dan rentetan. Penghurai kemudiannya akan mengeluarkan nombor baris yang menghuraikan ralat. Daripada melihat kod yang sangat bertele-tele, anda boleh mengasingkan simbol sintaks yang hilang atau salah letak.
. if
语句拆分为不同的或嵌套的 if
benar-benar membantu mencari punca ralat sintaks.
Komen keluarkod yang menyinggung perasaan.
bermula dari awal tulis semulabahagian yang dikomen.
kenyataan. ? :
条件运算符可以压缩代码并且确实很有用。但它并不能在所有情况下提高可读性。在不熟悉的情况下更喜欢简单的 if
blok. if:
/elseif:
/endif;
) 对于模板来说很常见,但可以说不太容易遵循正常的 {
代码 }
untuk menamatkan pernyataan/baris. ;
tidak sepadan dan petikan tidak terlepas. "
或 '
penggabungan. .
. Kira mereka dalam baris yang dilaporkan. Adakah kuantiti mereka sama? (
括号)
Jangan lupa bahawa menyelesaikan satu masalah tatabahasa boleh mendedahkan masalah seterusnya.
Jika anda menyelesaikan satu masalah tetapi sesuatu yang lain muncul dalam beberapa kod di bawah, anda pada asasnya berada di landasan yang betul.
Jika ralat sintaks baharu muncul dalam baris yang sama selepas mengedit, perubahan percubaan anda mungkin gagal. (Tetapi bukan selalu.)
Jika anda tidak dapat membetulkannya, pulihkan sandaran kod kerja anda yang terdahulu.
差异
. Ia mungkin membantu untuk memahami masalah sintaks.
Watak Unicode sesat yang tidak kelihatan : Dalam sesetengah kes, anda perlu gunakan editor hex atau editor/penonton lain pada kod sumber. Sesetengah masalah tidak dapat ditemui hanya dengan melihat kod.
Cuba grep --color -P -n "[x80-xFF]" file.php
sebagai langkah pertama untuk mencari simbol bukan ASCII.
Khususnya, BOM, ruang lebar sifar atau ruang tidak pecah dan petikan pintar sering muncul dalam kod sumber.
Beri perhatian kepada jenis baris baharu yang disimpan dalam fail.
PHP hanya menyokong watak suapan baris n dan tidak menyokong aksara r carriage return.
Ini kadangkala boleh menjadi masalah untuk pengguna MacOS (walaupun pada OS X jika editor salah konfigurasi).
Biasanya hanya digunakan apabila menggunakan baris tunggal //
或 #
注释时才会出现问题。当忽略换行符时,多行 /*...*/
Komen jarang mengganggu penghurai.
Jika ralat tatabahasa anda tidak dihantar melalui rangkaian: Anda kebetulan mempunyai ralat sintaks pada mesin anda. Tetapi menyiarkan fail yang sama dalam talian tidak lagi menunjukkannya. Ini hanya boleh bermakna satu daripada dua perkara:
Anda melihat fail yang salah!
Atau kod anda mengandungi Unicode sesat yang tidak kelihatan (lihat di atas). Anda boleh mengetahuinya dengan mudah: hanya salin kod dari borang web kembali ke editor teks anda.
Semak versi PHP anda. Tidak semua binaan sintaks tersedia pada setiap pelayan.
php -v
untuk jurubahasa baris arahan
Untuk panggilan melalui pelayan web.
Ini tidak semestinya sama. Terutama apabila menggunakan bingkai, anda perlu memadankannya.
Jangan gunakan kata kunci simpanan PHP sebagai fungsi/kaedah, pengecam kelas atau pemalar.
Percubaan dan kesilapan adalah pilihan terakhir.
Jika semuanya gagal, anda sentiasa boleh googlemesej ralat anda. Simbol sintaks kurang mudah dicari (walaupun Stack Overflow itu sendiri diindeks melalui SymbolHound). Oleh itu, anda mungkin perlu menyemak imbas beberapa halaman lagi untuk mencari kandungan yang berkaitan.
Lebih banyak panduan:
Jika tapak web anda kosong, selalunya ia disebabkan oleh kesilapan tatabahasa. Dayakan paparannya:
error_reporting = E_ALL
display_errors = 1
Dalam php.ini
php.ini
一般来说,或者通过 mod_php 的 .htaccess
Anda secara amnya, atau melalui .htaccess
,
Malah .user.ini
menggunakan tetapan FastCGI.
Sudah terlambat untuk mendayakannya dalam skrip yang rosak kerana PHP tidak dapat mentafsir/menjalankan baris pertama pun. Penyelesaian pantas ialah membuat skrip pembalut seperti test.php
:
<?php error_reporting(E_ALL); ini_set("display_errors", 1); include("./broken-script.php");
Kod yang gagal kemudian dipanggil dengan mengakses skrip pembalut ini.
Ia juga membantu mendayakan error_log
并查看您的网络服务器的error.log
PHP apabila skrip ranap dengan respons HTTP 500.