Maison >développement back-end >tutoriel php >Analyse des erreurs PHP

Analyse des erreurs PHP

大家讲道理
大家讲道理original
2017-05-28 09:45:151388parcourir

Même les programmeurs expérimentés sont voués à commettre des erreurs pendant le processus de programmation. Les messages d'erreursont non seulement inutiles mais souvent frustrants si le développeur ne peut pas les remarquer et comprendre ce que signifie le message d'erreur du compilateur, donc une meilleure compréhension des messages d'erreur peut aider à gagner considérablement du temps sur la recherche et la correction du contenu erroné.

Déclaration de variable  : Si vous déclarez une variable dans une instruction comme suit : $var = 'value'; le compilateur trouvera d'abord la valeur de la moitié droite de l'instruction , c'est cette partie de l'instruction qui provoque souvent des erreurs. Si vous utilisez une syntaxe incorrecte, vous obtiendrez une erreur d'analyse.

Erreur d'analyse :

Par exemple, Erreur d'analyse : Erreur d'analyse, T_
WHILE inattendu dans c:program filesapache groupapachehtdocsscript.php à la ligne 19 Les erreurs d'analyse se succédaient et PHP arrêtait d'exécuter le script après la première erreur d'analyse à chaque fois que l'erreur précédente était déterminée. De plus, les erreurs d'analyse contiennent très peu d'informations, avec presque aucun rapport sur le numéro de ligne où l'erreur s'est produite. Par exemple, des mots-clés prédéfinis sont utilisés dans l'expression
, par exemple : while = 10 ; while est un mot-clé prédéfini et ne peut pas se voir attribuer de valeur. Les mots-clés prédéfinis incluent while, function, etc. Nous ne pouvons pas utiliser ces mots-clés prédéfinis pour nommer des variables, sinon le compilateur signalera une erreur. Parmi eux, T_IF représente if(), T_WHILE représente while(), T_FOR représente for(), etc. Erreurs courantes :

Il existe également des erreurs courantes, telles que des déclarations ne se terminant pas par un point-virgule (;),

guillemets manquants dans la chaîne
, etc. De plus, les accolades (}) ne sont pas utilisées pour terminer une fonction ou une boucle, par exemple : function UselessFunction() {for($ i < 0; $i < 10; $i++){
}

générera l'erreur suivante :

Erreur d'analyse : erreur d'analyse inattendue dans c:program filesapache groupapachehtdocsereg2.php à la ligne 9

Puisque la fonction UselessFunction ne se termine pas par une accolade (}), le compilateur PHP continuera à rechercher l'accolade fermante jusqu'à ce qu'elle atteigne la fin du fichier. Étant donné que le compilateur ne trouve pas d'accolade correspondante, il signale une erreur de fin de fichier.
Si la hiérarchie du code est correctement reflétée, les messages d'erreur deviendront très évidents. Sinon, le code sera très difficile à déboguer. Par conséquent, assurez-vous d'indiquer la structure hiérarchique du code, ce qui permettra aux développeurs ultérieurs d'améliorer plus facilement le code.

MySQL Erreur :

Un autre type de message d'erreur est l'erreur MySQL, qui provoque souvent des maux de tête chez les novices PHP, par exemple : Avertissement : l'argument fourni n'est pas un MySQL valide result

resource in...La mauvaise ligne signalée ci-dessus peut être : while($row =
mysql_fetch_array($result)) {} Le paramètre $result n'est pas valide ressource, car query
a échoué et mysql_fetch_array ne sera pas traité. Toute requête avec une syntaxe invalide ou un échec de connexion à la base de données doit être testée dans la console MySQL. Erreurs plus faciles

Notez la différence entre

echo
    et
  1. print

     : echo et Print sont tous deux utilisés pour la sortie, mais il existe encore des différences subtiles entre les deux. Il n'y a pas de valeur de retour après la sortie d'écho, mais print a une valeur de retour et renvoie false lorsque son exécution échoue. Par conséquent, elle peut être utilisée comme une fonction normale, par exemple, si $r = print "Hello World" est exécuté, la valeur de la variable $r sera 1. De plus, l'instruction echo dans le code s'exécute légèrement plus rapidement que l'instruction print.
    Notez la différence entre une chaîne vide ('') et

    NULL
  2.  :
  3. Les chaînes vides et NULL en PHP sont stockées avec une valeur de 0, mais Leurs types ne sont pas les mêmes. Le premier est

    string, tandis que le second est NULL. On peut voir que les valeurs de chaîne ('') et NULL sont égales mais les types sont différents.

  4. Distinguer la différence entre == (égal ET) et === (ET congru) :
    Les deux appartiennent à l' opérateur de comparaison , == (égal) Il compare uniquement si les valeurs sont égales, tandis que === (tous égaux) compare non seulement si les valeurs sont égales, mais compare également si les types sont égaux, ce qui est plus strict.

  5. Distinguer la différence entre include et require : Les fonctions de
    include() et require() sont fondamentalement les mêmes, mais dans l'utilisation, il existe également quelques différences. include() est une fonction d'inclusion conditionnelle, tandis que require() est une fonction d'inclusion inconditionnelle. Par exemple, dans le code suivant, si la variable $a est vraie, le fichier a.php sera inclus : if($a){
    include("a.php");
    }
    Et require() est différent de include(). Quelle que soit la valeur prise par $a, le code suivant inclura le fichier a.php :
    if($a){
    require( "a .php");
    >
    En termes de
    gestion des erreurs, utilisez l'instruction include. Si une erreur d'inclusion se produit, le programme ignorera l'instruction include bien que le message d'erreur le fasse. s'affichera, le programme continuera à s'exécuter. Cependant, l'instruction require provoque une erreur fatale.

  6. Notez la différence entre is

    set et vide : empty sert à déterminer si une variable est "vide", tandis que isset sert à déterminer si une variable a été mis en place.

  7. Distinguer la différence entre self :: et ceci-->:

    Lors de l'accès à des variables ou méthodes membres dans une classe PHP, si elle est référencée par
    Si une variable ou une méthode est déclarée const (constant) ou static (staticattribut), alors l'opération de domaine doit être utilisé l'opérateur ::, et si la variable ou la méthode référencée n'est pas déclarée comme const ou static, alors utilisez l'opérateur de pointage ->.


    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn