11
votes

Quel est le point de e_all | E_truct si c'est la même valeur que e_all?

  • e_all code> est égal 8191 ( 0001 1111 1111 1111 code>) li>
  • e_strict code> est égal 2048 ( 0000 1000 0000 0000 code>) li>

    Utilisation du bitwise ou pour les combiner: P>

    1 1111 1111 1111
    

2 commentaires

J'ai remarqué qu'avec 5.4 que je puisse faire ce que je peux faire le suivant 1. Set e_all dans php.ini puis e_all | E_STRICT 2. Vérifiez que phpinfo () et la valeur pour la déclaration d'erreur est la même. Cela me semble un bug pour moi ....


Utilisez Maximivanov.github.io/php-error-Reporting-calculator à Créer une déclaration d'erreur de votre choix


4 Réponses :


19
votes

Vous voulez: xxx

e_all n'inclut pas e_truct (sauf si vous utilisez PHP 5.4+). Vos valeurs sont incorrectes. De constantes prédéfinies e_all est définie comme suit:

Toutes les erreurs et avertissements, tels que supportés, Sauf niveau de niveau e_truct avant PHP 5.4.

32767 en php 5.4.x, 30719 dans PHP 5.3.x, 6143 dans php 5.2.x, 2047 auparavant


3 commentaires

Je vois que cela signifie que les valeurs constantes vont changer à mesure que la version change. Les valeurs que j'ai trouvées proviennent de w3schools.com/php/func_error_reporting.asp Ils sont très obsolète, non?


W3schools peut avoir des informations très obsolètes. Je vais toujours aller à php.net comme première référence pour quelque chose de lié à PHP.


Dans PHP 5.4, e_strict est inclus dans e_all .



3
votes

1 | 1 = 1

La réponse la plus simple possible est qu'il n'y a actuellement aucune raison de combiner les deux avec un boeuf ou une opération, mais s'ils décident de changer ces constantes à l'avenir, il pourrait y avoir.

Edit: Et vous semblez avoir tiré les mauvaises valeurs pour ces constantes, rendant toute la question de la question.


0 commentaires

1
votes

de php.net:

Passage dans la valeur -1 montrera toutes les erreurs possibles, même lorsque de nouveaux niveaux et constantes sont ajoutés dans les futures versions PHP. La constante E_All se comporte également de cette façon comme de PHP 5.4.


0 commentaires

1
votes

Les valeurs de bit fournies dans la question ne sont généralement pas fausses, mais uniquement pour les versions PHP plus âgées que 5.4.

PHP 5.4 +

E_All Inclut E_Strict < / code> Vous devez donc utiliser: error_rporting (e_all); xxx

php 5.3

e_all n'inclut pas e_truct de sorte que vous devriez utiliser: error_racting (e_all | e_strict); xxx

PHP 5.0 jusqu'à 5.2

e_all n'inclut pas e_strict afin que vous puissiez utiliser: error_reporting (e_all | e_strict); mais les valeurs du bit diffèrent des valeurs dans PHP 5.3.

PHP avant 5,0

E_Strict n'existe pas, vous devez donc utiliser: error_rporting (e_all); < / code>


0 commentaires