PHP ayrıştırma hataları aşağı avcılık

7 Cevap

PHP kodu yazarken, size daha önce düzenleme ne parça hatırlıyorum yoksa ayrıştırma hataları izini için bazı gerçekten zor neden olabilir. Ben keşfetti olabilir bu hataları avlamak için herhangi anlayışlı yöntemleri hakkında duymak ilgi duyarım.

Örnek: beklenmeyen ';' hattında 877 someclass.php içinde, bekliyor T_FUNCTION

Bu belirsiz hata beklenmedik sahip olduğuna dikkat çekiyor; 877 PHP kod satırlarını ve hata kesinlikle son hattı değil içeren bir sınıf. Hata mesajı yanıltıcı? Nerede ve nasıl başlayıp, sadece kusurlu yer Taramasını kodun her satır bulmak için çalışıyor yanı sıra, seyir başlar.

7 Cevap

Bu tespit yardımcı olacaktır - Her şeyden önce, ben sinek, kodunuzu yazarken, gibi, örneğin, Eclipse PDT (which is quite powerful, actively maintained, and free, and OSS) üzerine vurgulamak PHP hataları olduğunu bir düzenleyici kullanarak gitmek istiyorum kod çalıştırmak zorunda kalmadan hemen bazı hatalar.

Onunla bunu birlikte kullanıyorsanız Subversion plug-in (Eclipse SVN erişimi entegre), aynı zamanda bu "hızlı fark" dediği görüntüleyebilirsiniz ediyor: SVN taahhüt henüz modifiye hatları marjı vurgulanır - bu son tamamlama beri nelerin değiştiğini tespit yardımcı olur.


Note, though, that, as it's based on Eclipse, requires a quite powerful computer (I'd say a dual-core with 2GB RAM is required, 1 GB generally being not enough if you also want to use some other software at the same time ^^ )


Then, when you have being programming in PHP for quite some time, you'll probably be able to understand those messages faster / better, and will know where to look ;-)

Bazı kontrol sürüm sistemini kullanıyorsanız, dosya / sınıfının fiili ve eski sürümleri arasındaki farklar aramak için olabilir.

Hataları bu tür bir "{" bir, switch, while,, fonksiyon, sınıf, vb kapalı yoksa by genellikle.

Ayrıca kullanmak olursa olsun hangi editörü, sık sözdizimi denetimi yapabilirsiniz:

php -l file.php

Ben kelime "sık sık" kullandığını unutmayın. . Eğer vim'den kullanırsanız, sizin vimrc dosyasında aşağıdaki yararlı olabilir:

map <F12> <ESC>:!php -l %<CR>

Sadece anında sözdizimi kontrol etmek istediğiniz zaman F12 çarptı.

Bunu yazmak gibi sık mümkün olduğunca kod çalıştırabilir. Az her yürütme, yeni hatalar için küçük arama mekân arasındaki eklemek kod satırları.

Ben sadece bulma, ben sayfa yüklenmiştir son kez bu yana 877 satır dosya 5 satır düzenlenebilir ettiyseniz hata büyük olasılıkla ben 100 satır düzenlenmiş ettiyseniz çok daha hızlıdır.

Ben sözdizimi hataları PHP'nin raporlama oldukça iyi buluyorum, ama ne mümkün için sınırlama bir sözdizimi hatası hemen hemen her şey olabilir göz önüne alındığında, tabii ki var. Genel olarak, hata muhtemelen bildirdi hattına yakın. Örneğin, bu durumda, ben gibi bir şey yapmış zannedebilir:

class Foo {
  function blah() {
  };
}

ya da belki de:

class Foo {
  protected $foo;;
}

Noktalı virgül, bu bağlamlarda iki yasaktır.

Zend Studio kod boyunca adım, kesme ayarı, ve değişkenler / parametreleri teftiş de dahil olmak üzere çeşitli seçenekler yapmanız gereken büyük bir hata ayıklama aracı var. Tabii, tüm bu bir fiyat ile birlikte geliyor. = (