![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 31.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam w swoim projekcie kilka takich kilka takich struktur kontrolnych, gdzie właściwie nie interesuje mnie czy dana zmienna istnieje czy nie, bo jeśli nie istnieje, to i tak warunek nie będzie spełniony, czyli mam rezultat jakiego chce.
Jako przykład mogę podać walidację formularza, w przypadku kiedy użytkownik nie wpisał jakichś potrzebnych danych, a formularz i tak nie przejdzie bo dane są sprawdzone pod kątem minimalnej długości stringa a np. długość nie może być mniejsza niż 5. Problem w tym że kiedy tej zmiennej nie ma, to w error.log powstają niepotrzebne notice. No i teraz pytanie. Czy można tłumić te notice przez dodanie przed zmienną operatora @, czy może mogą powstać jakieś niepoźądane efekty takiego działania i lepiej było by sprawdzać zmienną przez isset()? Jednak znowu czy isset() nie jest większym obciążeniem dla aplikacji niż małe, szybkie @? Ten post edytował norgoth 31.01.2008, 23:44:06 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
1. możesz ustawić error_reporting bez NOTICE, ale to rozwiązanie na szybko dla gotowego skryptu, zdecydowanie od razu lepiej pisać bez jakichkolwiek błędów
2. @mike, jesteś pewny, że przy @ parser zwraca błąd, przetwarza go i generuje? w jakiejś prezentacji jednego z developerów (był to chyba Ilia Alshanetsky) wyczytałem, że PHP wykonuje następujące instrukcje:
i że to właśnie to przełączanie error_reporting jest tak kosztowne. błędy nie są generowane bo error_reporting jest 0. Ten post edytował sopel 1.02.2008, 00:57:02 |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
2. @mike, jesteś pewny, że przy @ parser zwraca błąd, przetwarza go i generuje? Sprawdziłem teraz i faktycznie przy użyciu @ komunikaty nie są zapisywane do plików logów. Co oznaczałoby, że PHP ich nie przesyła dalej.Nie mniej jednak nadal uważam, że parser te błędy generuje a potem przechwytuje. Czytałem to w którejś z książek a później obił mi się o "uszy" jakiś benchmark znaleziony w sieci. Zwróć uwagę, że error_reporting() z zerem jako parametr sprawi, że błędy nie zostaną zaraportowane a nie, że nie zostaną przechwycone. Faktycznie może być tak, że skorzystanie z operatora tłumienia powoduje przełączanie tej dyrektywy. Nie mniej jednak na pewno jest to opóźnienie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 06:38 |