On peut choisir d'afficher ou non les erreurs
Il est possible de n'afficher que certains types d'erreurs
La configuration dépend du logiciel utilisé
Pour afficher les erreurs sur MAMP, il faut modifier le fichier de configuration de PHP manuellement
Il est possible de choisir les messages à afficher
Et de les afficher dans la page ou dans les logs
Il est possible de choisir si oui ou non les erreurs s'affichent
Affichage plus lisible des erreurs
Les paramètres d'affichage des erreurs peuvent être surchargés directement en PHP
On utilise la méthode error_reporting() pour choisir quels messages afficher
Et la méthode init_set('display_errors',1) pour afficher ou non les erreurs
//Peut être remplacé par E_WARNING, E_PARSE, E_NOTICE, E_ERROR
error_reporting(E_ALL);
ini_set('display_errors', 1);
Il existe 4 principaux types d'erreurs en PHP
Il est important de toutes les corriger
Une erreur qui n'empêche absolument pas le script de fonctionner
Il s'agit d'une information sur un comportement étrange
$foo = ['test1','test2','test3'];
echo $foo[3];
Une erreur pouvant potentiellement altérer le fonctionnement du script
include 'fichier_qui_nexiste_pas.php';
Une erreur empêchant le script de fonctionner
require 'fichier_qui_nexiste_pas.php';
Impossibilité de compiler le script PHP
echo 'hey'
echo 'boum error';
Certains scripts peuvent envoyer des Exceptions avant d'envoyer une erreur
Il est possible d'attraper ces exceptions pour prévenir les erreurs
// Exemple de connexion à une base de données avec PDO
try
{
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1','user','password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
die('Impossible de se connecter à la base de données');
}
$e contient plusieurs méthodes permettant d'identifier l'Exception
Deux méthodes permettent d'arrêter le script
Très utile pour éviter que le reste du site se charge
$foo = 'test';
// Avec exit
echo $foo;
exit;
// Avec die
die($foo);
Certaines variables comme les tableaux ne peuvent pas être affichées simplement (via echo ou die)
Deux méthodes permettent d'afficher efficacement le contenu
var_dump contient plus d'informations (tailles des tableaux et types des contenus)
$foo = [40,'test',true];
echo $foo; // Array
print_r($foo); // Array ( [0] => 40 [1] => test [2] => 1 )
var_dump($foo); // array(3) { [0]=> int(40) [1]=> string(4) "test" [2]=> bool(true) }
Les entourer des balises html <pre></pre> permet d'appliquer des retours à la ligne et une indentation HTML pour une meilleure lisibilité
$foo = [40,'test',true];
echo '<pre>';
var_dump($foo);
echo '</pre>';
Le code étant long à écrire et difficile à retenir, il est conseillé de créer un snippet
Pour Sublime, aller dans outils > New Snippet
Insérez le code suivant
<snippet>
<content><![CDATA[
echo '<pre>';
print_r(${1:$this});
echo '</pre>';
]]></content>
<tabTrigger>printr</tabTrigger>
<scope>source.php</scope>
</snippet>
Sauvegardez-le dans le dossier User de Sublime Text et appelez-le printr.sublime-snippet
Pour trouver ce dossier allez dans Sublime Text > Preferences > Browse Packages...
Lorsque vous faites du php, écriez printr puis appuyez sur TAB