05-09-2009, 01:44 AM
Je reprends de mon côté un argument que j'ai déjà donné : on utilise les canons.
jappelleMaFonction() or die('ouhlala');
est une notation vue qu'en PHP.
Certes quand on programme en PHP, on en utilise les spécificités.
Néanmoins, je pense à PERL, qui est ze langage truffé de spécificité et qui est, pour un novice, totalement incompréhensible...
Quand on commence à sentir une certaine professionnalisation dans sa manière de programmer, quand on passe d'un langage à un autre, on garde des habitudes, et or die() est affreux simplement à la lecture de code (ouai je sais "un gars qui comprend pas or die() est un mauvais programmeur").
Voici une version compréhensible par une grande partie des programmeurs quels que soient leurs langages de prédilection :
Exception ou pas, là pour moi n'est pas le problème. Il faut arrêter de gérer les scripts avec die().
L'article que j'avais cité :
http://www.phpfreaks.com/blog/or-die-must-die
Voici les arguments contre le die() :
Enfin, je conclurai mon post par ceci :
- je lis partout "utilisez les exceptions", "n'utilisez pas or die() qui est trop brutal"
- je ne trouve de "or die()" que dans les tutoriels, qui ne cherchent pas forcément à être "bien", mais juste rapide à comprendre (au moins le visiteur ne va pas attarder sa compréhension sur la gestion des exceptions)
- Loogaroo s'était lancé dans une guerre contre les erreurs mysql non gérées (le bon gros or die()) : http://loogaroo.net/category/mysql-error-stop/
Donc si tout le monde le dis, c'est qu'il doit y avoir une raison.
jappelleMaFonction() or die('ouhlala');
est une notation vue qu'en PHP.
Certes quand on programme en PHP, on en utilise les spécificités.
Néanmoins, je pense à PERL, qui est ze langage truffé de spécificité et qui est, pour un novice, totalement incompréhensible...
Quand on commence à sentir une certaine professionnalisation dans sa manière de programmer, quand on passe d'un langage à un autre, on garde des habitudes, et or die() est affreux simplement à la lecture de code (ouai je sais "un gars qui comprend pas or die() est un mauvais programmeur").
Voici une version compréhensible par une grande partie des programmeurs quels que soient leurs langages de prédilection :
$result = mysql_query($maRequeteSQL);
if ($result === false || mysql_error()) {
// on gère l'erreur...
} else {
// ça marche
}
Exception ou pas, là pour moi n'est pas le problème. Il faut arrêter de gérer les scripts avec die().
L'article que j'avais cité :
http://www.phpfreaks.com/blog/or-die-must-die
Voici les arguments contre le die() :
- Ce n'est pas un moyen très joli pour présenter une erreur à l'utilisateur
- Utiliser par exemple l'appel de mysql_error() avec, comme beaucoup le font, expose des informations qui ne devraient jamais être envoyées dans un environnement de production
- Vous n'avez aucun moyen de traiter l'erreur
- Vous ne pouvez pas journaliser l'erreur
- Vous ne pouvez pas contrôler s'il s'agit d'informations pouvant être affichées à l'écran ou pas. Ce n'est pas gênant de faire ça sur une environnement de développement, mais certainement pas dans un environnement de production
- Ca vous empêche de faire un quelconque nettoyage, ça arrête le script brutalement, c'est tout.
Enfin, je conclurai mon post par ceci :
- je lis partout "utilisez les exceptions", "n'utilisez pas or die() qui est trop brutal"
- je ne trouve de "or die()" que dans les tutoriels, qui ne cherchent pas forcément à être "bien", mais juste rapide à comprendre (au moins le visiteur ne va pas attarder sa compréhension sur la gestion des exceptions)
- Loogaroo s'était lancé dans une guerre contre les erreurs mysql non gérées (le bon gros or die()) : http://loogaroo.net/category/mysql-error-stop/
Donc si tout le monde le dis, c'est qu'il doit y avoir une raison.