Poziom raportowania błędów E_NOTICE został stworzony, aby pomóc programiście w wyszukiwaniu literówek i innych niedogodności spowodowanych elastycznym systemem zmiennych/tablic. Niestety moim zdaniem nie został on przyzwoicie zaprojektowany, przez co dość często zwyczajnie tylko utrudnia od zaprojektowanie skryptu. Za przykład mogą posłużyć tablice, gdzie bardzo pomogłaby nam niekonieczność definiowania indeksów, albo warunek
if($tablica[$i+1] == '('){
// obsluz sytuacje, gdy nastepnym elementem jest nawias
} |
Typowy programista zauważy od razu, że fakt, iż pole
$i+1 może być niezdefiniowane, nie gra tu żadnej roli. Niestety PHP z ustawionym E_NOTICE może wygenerować wtedy błąd. Są dwa możliwe warianty rozwiązań: albo wywołanie
error_reporting(E_ALL ^ E_NOTICE); |
Na początku skryptu, albo użycie operatora
@:
if(@($tablica[$i+1] == '(')){
// obsluz sytuacje, gdy nastepnym elementem jest nawias
} |
Pamiętaj jednak, by nie przesadzić z jego użyciem! Postawiony przed funkcjami spowoduje, że nie będą one generowały ŻADNYCH komunikatów prawdziwych już błędów (np. że nie można połączyć się z bazą danych), co utrudni sprawdzenie, dlaczego skrypt nie działa.