x
Üye
- Katılım
- 30 Ara 2022
- Mesajlar
- 341
- Tepkime puanı
- 31
- Puanları
- 28
İtibar:
PHP programlama dili de, diğer bir çok programlama dilinde olduğu gibi, herhangi bir hata durumunda kullanıcıyı elinden geldiğince bilgilendirir. Elinden geldiğince diyorum çünkü bir tek hatayı çözmediği kalır geriye, daha ne yapsın? Hatanın bulunduğu satırdan tutun da, tam olarak ne hatası olduğu, neyi unuttuğunuz ya da neyi fazla koyduğunuzu gibi temel parametreleri size hata mesajı halinde gösterir. Peki bizler, php web programcıları olarak bu hata mesajlarını ne kadar okuyabiliyoruz?
Aslında php geliştiricilerinin çok büyük bir sorunudur hata mesajı okumak. Hemen hemen her platformda geliştiricilerin karşılaştıkları hatalar ile ilgili mesajlarını görürsünüz. Hata mesajını yazarlar ve sorarlar, nerede hata yaptım diye… Oysa ki yapmaları gereken sadece php motoru tarafından kendilerine söylenen hata mesajını okumaktır. Okudukları zaman elleriyle koydukları gibi bulurlar hatanın sebebini.. Dilerseniz en çok karşılaşılan hatalara örnekler ile değinelim biraz.
Hata mesajı örnekleri
Yukarıdaki kodları gördüğünüz an hemen söylemişsinizdir aslında satır sonunda noktalı virgül unutulduğunu. Ama bunu göremeyip, üstelik kodlara ya da hata mesajına bakmadan çeşitli platformlarda sorular soran arkadaşlar var. Bir de bunun hata mesajını yazalım isterseniz:
Gördüğünüz gibi, mesaj çok açık. İngilizce bilmeseniz bile, google translate kullanarak, bunun bir ayrıştırma hatası olduğunu söylebiliriz. Ancak hata mesajını okurken de dikkat etmek gerek. Öyle ki, mesajda 5. satır olduğu yazıyor ama aslında demek istediği hatanın 5. satırda olduğu değil. 5. satırdaki işlemi yapamadığını, çünkü öncesinde bir söz dizimi hatası olduğunu söylüyor php bize… Ve hatta olası eksiklerin virgül ya da noktalı virgül olabileceğini de söylemeden edemiyor.
Yukarıdaki örnek bile yeterli aslında hata mesajının nasıl okunması gerektiğini göstermeye ama bir örnek daha verelim isterseniz.
Yukarıda ki kodlardan alacağınız hata mesajı da aşağıdadır:
Hemen hemen bir önceki ile aynı hata mesajı. Fakat burada nokta atışı yapmış ve hatanın satır üçte olduğunu söylemiş. Aslında biraz incelediğinizde hiç bir fark olmadığını görürsünüz. Mesajda bize, ‘in’ diye birşey olamayacağını, bunun bir hata olduğunu söylüyor. Çünkü Fatih kelimesinden sonra tek tırnak var ve bizim sevgili php motorumuz tek tırnaktan sonra nokta, virgül ya da noktalı virgül arıyor. Göremeyince de soruyor, in yerine virgül ya da noktalı virgül mi koymak istedin acaba diye..
Biraz da insanı çıldırtan “Notice” damgalı hata mesajlarına bakalım. Aslında bunlar hata mesajı değil, bildirimdir. Ve genelde geliştirme aşamasında php geliştiricisini uyarmak için gösterilir. Tabi siz son kullanıcıya sistemi sunduğunuzda hata mesajı göstermeyi kapatmıyorsanız o zaman başka
Bir tane notice damgalı hata mesajını örnekleyelim:
Kodlara baktığınızda hiç bir problem yok gibi duruyor değil mi? Ancak kocaman bir notice damgalı hata mesajı sizi bekliyor olacak çalıştırdığınızda:
Gördüğünüz gibi, tanımsız index ‘dizi’ şeklinde bir uyarı mesajı aldık. Neden böyle bir mesaj aldığımızı yorumlayalım hemen. Çünkü adres çubuğundan gelmesini beklediğimiz parametreyi ekrana yazdırmak istiyoruz ve $_GET global dizisi içinde adres çubuğundan herhangi bir parametre gönderilmediği eleman olmaz. Hata mesajımızda da bize bunu söylüyor aslında, ‘dizi isminde bir indeks tanımlanmamış’ diyor. Fakat hata.php?dizi=fatih dersek ekrana hatasız bir şekilde fatih yazdığını görüyoruz. Öyleyse bu hatadan kurtulmak için ne yapmamız gerekiyor? Doğru kod şudur arkadaşlar:
Yukarıdaki kod ile, eğer dizi indeksi tanımlıysa ekrana yazdır, değilse yazdırma dedik. Kodu çalıştırdığımızda da göreceğimiz üzere ilk etapta ekrana hiç bir çıktı vermeyecektir. Ancak hata.php?dizi=fatih dediğimizde fatih değerini ekranda görebiliriz. Yukarıdaki kod size yabancı geldiyse hemen aşağıdaki kodun ikiz kardeşi olduğunu söyleyelim:
Fazlaca hata mesajı ve bu mesajların ne işe yaradığı ile ilgili yazılabilecek sayfalarca cümle vardır ancak biz burada keselim. Çünkü mürekkep biter, yazacaklar bitmez.
Sonuç olarak;
Hata mesajlarının sonundaki satır sayısını değil, lütfen hata mesajlarını okuyalım. Çünkü çözüm her zaman hata mesajında gizlidir. Tam tersi bir durum size sadece vakit kaybettirir. 6 dakikada yazdığınız kodun bir hatası için 6 saat ve belki daha fazla zaman harcamak istemiyorsanız, 6 saniye daha verin ve mesajı dikkatlice okuyun.
Aslında php geliştiricilerinin çok büyük bir sorunudur hata mesajı okumak. Hemen hemen her platformda geliştiricilerin karşılaştıkları hatalar ile ilgili mesajlarını görürsünüz. Hata mesajını yazarlar ve sorarlar, nerede hata yaptım diye… Oysa ki yapmaları gereken sadece php motoru tarafından kendilerine söylenen hata mesajını okumaktır. Okudukları zaman elleriyle koydukları gibi bulurlar hatanın sebebini.. Dilerseniz en çok karşılaşılan hatalara örnekler ile değinelim biraz.
Hata mesajı örnekleri
PHP:
<?php
echo 'Merhaba Dünya'
?>
Yukarıdaki kodları gördüğünüz an hemen söylemişsinizdir aslında satır sonunda noktalı virgül unutulduğunu. Ama bunu göremeyip, üstelik kodlara ya da hata mesajına bakmadan çeşitli platformlarda sorular soran arkadaşlar var. Bir de bunun hata mesajını yazalım isterseniz:
Kod:
Parse error: syntax error, unexpected end of file, expecting ‘,’ or ‘;’ in C:wampwwwhata.php on line 5
Gördüğünüz gibi, mesaj çok açık. İngilizce bilmeseniz bile, google translate kullanarak, bunun bir ayrıştırma hatası olduğunu söylebiliriz. Ancak hata mesajını okurken de dikkat etmek gerek. Öyle ki, mesajda 5. satır olduğu yazıyor ama aslında demek istediği hatanın 5. satırda olduğu değil. 5. satırdaki işlemi yapamadığını, çünkü öncesinde bir söz dizimi hatası olduğunu söylüyor php bize… Ve hatta olası eksiklerin virgül ya da noktalı virgül olabileceğini de söylemeden edemiyor.
Yukarıdaki örnek bile yeterli aslında hata mesajının nasıl okunması gerektiğini göstermeye ama bir örnek daha verelim isterseniz.
PHP:
<?php
echo 'Fatih'in iki farklı adı var.';
?>
Yukarıda ki kodlardan alacağınız hata mesajı da aşağıdadır:
Kod:
Parse error: syntax error, unexpected ‘in’ (T_STRING), expecting ‘,’ or ‘;’ in C:wampwwwhata.php on line 3
Hemen hemen bir önceki ile aynı hata mesajı. Fakat burada nokta atışı yapmış ve hatanın satır üçte olduğunu söylemiş. Aslında biraz incelediğinizde hiç bir fark olmadığını görürsünüz. Mesajda bize, ‘in’ diye birşey olamayacağını, bunun bir hata olduğunu söylüyor. Çünkü Fatih kelimesinden sonra tek tırnak var ve bizim sevgili php motorumuz tek tırnaktan sonra nokta, virgül ya da noktalı virgül arıyor. Göremeyince de soruyor, in yerine virgül ya da noktalı virgül mi koymak istedin acaba diye..
Biraz da insanı çıldırtan “Notice” damgalı hata mesajlarına bakalım. Aslında bunlar hata mesajı değil, bildirimdir. Ve genelde geliştirme aşamasında php geliştiricisini uyarmak için gösterilir. Tabi siz son kullanıcıya sistemi sunduğunuzda hata mesajı göstermeyi kapatmıyorsanız o zaman başka

Kod:
<?php
echo $_GET['dizi'];
?>
Kodlara baktığınızda hiç bir problem yok gibi duruyor değil mi? Ancak kocaman bir notice damgalı hata mesajı sizi bekliyor olacak çalıştırdığınızda:
Kod:
Notice: Undefined index: dizi in C:wampwwwhata.php on line 3
Gördüğünüz gibi, tanımsız index ‘dizi’ şeklinde bir uyarı mesajı aldık. Neden böyle bir mesaj aldığımızı yorumlayalım hemen. Çünkü adres çubuğundan gelmesini beklediğimiz parametreyi ekrana yazdırmak istiyoruz ve $_GET global dizisi içinde adres çubuğundan herhangi bir parametre gönderilmediği eleman olmaz. Hata mesajımızda da bize bunu söylüyor aslında, ‘dizi isminde bir indeks tanımlanmamış’ diyor. Fakat hata.php?dizi=fatih dersek ekrana hatasız bir şekilde fatih yazdığını görüyoruz. Öyleyse bu hatadan kurtulmak için ne yapmamız gerekiyor? Doğru kod şudur arkadaşlar:
PHP:
<?php
echo isset($_GET['dizi']) ? $_GET['dizi'] : '';
?>
Yukarıdaki kod ile, eğer dizi indeksi tanımlıysa ekrana yazdır, değilse yazdırma dedik. Kodu çalıştırdığımızda da göreceğimiz üzere ilk etapta ekrana hiç bir çıktı vermeyecektir. Ancak hata.php?dizi=fatih dediğimizde fatih değerini ekranda görebiliriz. Yukarıdaki kod size yabancı geldiyse hemen aşağıdaki kodun ikiz kardeşi olduğunu söyleyelim:
PHP:
<?php
if(isset($_GET['dizi'])){
echo $_GET['dizi'];
}else{
echo '';
}
?>
Fazlaca hata mesajı ve bu mesajların ne işe yaradığı ile ilgili yazılabilecek sayfalarca cümle vardır ancak biz burada keselim. Çünkü mürekkep biter, yazacaklar bitmez.
Sonuç olarak;
Hata mesajlarının sonundaki satır sayısını değil, lütfen hata mesajlarını okuyalım. Çünkü çözüm her zaman hata mesajında gizlidir. Tam tersi bir durum size sadece vakit kaybettirir. 6 dakikada yazdığınız kodun bir hatası için 6 saat ve belki daha fazla zaman harcamak istemiyorsanız, 6 saniye daha verin ve mesajı dikkatlice okuyun.