[Contribution - PHP] Erreurs fréquentes (21 trucs)



  • Quand on débug un script PHP, il y a souvent quelques erreurs qui sont toutes simple, et des astuces pour débugguer rapidement.
    J'ai essayé d'en répertorier le plus possible, mais il en manque sûrement, donc si vous avez une suggestion, postez ici et je la rajouterais.
    ++ à tous!

    Code en général

    • Si le code n'est pas interprété, vérifiez qu'il est entouré par les tags PHP complets (et non pas <?, qui nécessite l'activation d'une option de PHP)
    • N'oubliez pas de mettre le point-virgule à la fin de chaque commande, et ne confondez pas le point-virgule avec le deux-points (ils sont difficiles à différencier, en plein codage)
    • Ne mettez pas de résultat de requête en tant qu'attribut de la fonction mysql_insert_id()! Il faut mettre soi un identifiant de connexion, soi rien.
    • Pour vérifier le contenu d'un tableau, utilisez le code qui suit. Il formatera l'affichage pour ne pas avoir à faire Clic-droit, voir la source:
    <?php
    	function pa($array) {
    		echo "<pre>";
    		print_r($array);
    		echo "</pre>";
    	}
    ?>
    

    Envoi de fichier par formulaire:

    • N'oubliez pas de définir l'attribut "enctype" du formulaire de la façon suivante:
    enctype="multipart/form-data"
    ```- Si vous obtenez une Permission Denied en voulant transférer le fichier temporaire alors que le dossier possède les droits qu'il faut, vérifiez que le nom du fichier d'arrivé soit valide
    

    Ajax:

    • Si vous souhaitez recevoir le texte d'arrivée correctement, rajoutez le code suivant avant toute écriture de texte:
    header("Content-Type: text/html; charset=ISO-8859-15;");
    ```- Quand vous envoyez des données via "POST", n'oubliez pas de définir également le type de la requête de la manière suivante:
    

    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    - Il est impossible de contourner ce comportement via un header('Location: XXX'). Pas de bol ;)
    

    Déclaration de tableau

    • Ne pas oublier de mettre une virgule à la fin de chaque élément
    • Ne pas confondre la virgule avec le point virgule

    Regex

    • Utilisez des délimiteurs visible et qui ne sont pas utilisés par l'analyseur syntaxique (de préférence). Personnellement, j'utilise #.

    Conditions

    • Ne confondez surtout pas l'opérateur d'assignement = et l'opérateur de condition ==. Si vous le faites, vous la condition sera toujours exécutée, sauf dans certains cas.

    Messages d'erreur

    • Ne les désactivez pas en production!
    • Désactivez-les lorsque votre site est accessible en utilisant la commande:
    error_reporting(0);
    

    Fonctions

    • N'oubliez pas de mettre le mot-clé "global" devant les variables à utiliser qui n'ont pas été déclarés dans la fonction (ou utilisez la super-globale $GLOBALS).

    Classes:

    • N'oubliez pas que dans le cas d'une classe statique, le mot-clé de référence est self::.
    • Pour utiliser une fonction callback venant d'une classe, utilisez la syntaxe suivante (en supposant que vous vouliez appeler la fonction depuis la classe elle-même):
    $var = preg_replace("#http://(.+)#",array(&$this,"nom_de_la_fonction"),$var);
    ```- Toujours dans les classes statiques, n'oubliez pas de mettre le signe $ devant les variables à appeler (contrairement aux classes dynamiques).
    - Bien que les classes dynamique n'aient pas besoin du "$" devant les nom de variable quand on les appelle, il est obligatoire de le mettre durant la déclaration des variables
    - Le mot-clé de référence des classes dynamiques est $this


  • Cette article a été transféré sur la Wiki


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.