2009-10-28 21 views
10
  • E_ALL równa 8191 (0001 1111 1111 1111)
  • E_STRICT równa 2048 (0000 1000 0000 0000)

Korzystanie logiczną OR je łączyć:Jaki jest sens E_ALL | E_STRICT, jeśli ma taką samą wartość jak E_ALL?

1 1111 1111 1111 
    1000 0000 0000 

otrzymujemy dokładnie samą wartość jak w oryginale E_ALL:

1 1111 1111 1111 

Jaki jest sens robienia error_reporting(E_ALL | E_STRICT), jeśli możemy po prostu zrobić error_reporting(E_ALL), aby uzyskać to samo?

+0

Zauważyłem, że dzięki 5.4 mogę wykonać następujące czynności: 1. Ustaw E_ALL w php.ini, a następnie E_ALL | E_STRICT 2. Sprawdź phpinfo(), a wartość zgłaszania błędów jest taka sama. To wydaje mi się błędem ... –

+0

użyj https://maximivanov.github.io/php-error-reporting-calculator/, aby utworzyć raportowanie błędu do wyboru – pkachhia

Odpowiedz

18

Chcecie:

error_reporting(E_ALL | E_STRICT); 

E_ALL nie obejmuje E_STRICT (chyba, że ​​używasz PHP 5.4+). Twoje wartości są nieprawidłowe. Od Predefined ConstantsE_ALL jest zdefiniowany jako:

wszystkich błędów i ostrzeżeń, jak obsługiwane wyjątkiem poziomu E_STRICT przed PHP 5.4.

32767 PHP w wersji conajmniej 5.4.x, 30719 w PHP 5.3.x, 6143 w PHP 5.2.x 2047 wcześniej

+0

Widzę to oznacza, że ​​wartości stałe ulegną zmianie w miarę zmiany wersji. Wartości, które znalazłem pochodzą z http://www.w3schools.com/PHP/func_error_reporting.asp Są bardzo przestarzałe, prawda? – bobo

+11

w3schools może mieć bardzo nieaktualne informacje. ZAWSZE chodzę na php.net jako pierwsze odniesienie do wszystkiego, co dotyczy PHP. – cletus

+3

W PHP 5.4, 'E_STRICT' jest zawarty w' E_ALL'. – kiamlaluno

3

1 | 1 = 1

Najprostszą możliwą odpowiedzią jest to, że obecnie nie ma żadnego powodu, aby połączyć te dwa bitowo lub operacyjnie, ale jeśli kiedykolwiek zdecydują się na zmianę tych stałych w przyszłości, to może być.

Edytuj: Wydaje się, że wyciągnąłeś złe wartości dla tych stałych, przez co całe pytanie jest dyskusyjne.

+0

Tak, skopiowałem je z http://www.w3schools.com/PHP/func_error_reporting.asp – bobo

1

od php.net:

przekazując wartości -1 pokaże każdy możliwy błąd, nawet gdy nowe poziomy i stałe są dodane w przyszłych wersjach PHP. Stała E_ALL również zachowuje się tak, jak w PHP 5.4.