URL: https://linuxfr.org/users/montaigne/journaux/php-a-fractal-of-bad-design
Title: PHP, A Fractal Of Bad Design
Authors: Ontologia
Date: 2012-09-12T11:48:33+02:00
Tags:
Score: 0
Oui journal, nous ne sommes pas vendredi, mais un bon troll, fais toujours du bien en cette rentrée trépidante.
Le sujet du troll est comme le titre l'indique, PHP.
Si ce "langage" n'avait pas tant de succès, on appellerait mon appeau à troll "tirer sur une ambulance", mais voilà, [avec 6% et une position de 6ème langage le plus utilisé dans le monde](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html), PHP sévit encore.
[PHP, a fractal of bad design](http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/) est un magnifique texte, tout de colère rentré, mais rigoureux et documenté, listant toutes les incohérences de la star des langages orienté "web".
La lecture est longue tant les débilités existantes dans ce langage sont nombreuses.
Votre serviteur n'est pas seulement qu'un aigri vomissant sur ce langage par amour d'autres langages plus "évolués", il (j'aime parler de moi à la troisième personne) a passé deux jours à tenter de convertir la grammaire PHP de yacc vers OcamlYacc et a complètement halluciné devant un des codes le plus immonde qu'il ait pu voir dans sa vie (genre le parser dans le lexer, sisi).
Pour vous allécher, voici quelques exemples d'horreurs dont parle le lien bookmark plus haut.
### Empty the grammar
La fonction empty permet de vider une variable, très bien, pourquoi pas.
Mais la fonction empty, n'est pas une fonction !!!
C'est quoi alors ?
Devinez !
C'est un mot clé de la grammaire ! Si si, ils ont osé !
Donc empty($var) fonctionne mais empty($var || $var2) provoque un parse error !!
C'est beau, non ?
### Found FALSE
Autre exemple, la fonction array_search renvoi l'index de l'élément recherché dans le tableau, ou FALSE sinon.
Certains, comme votre serviteur, vont tiquer : on renvoi un int ou un booléen (ou une exception à la limite), mais il faut choisir !
Mais que se passe t-il si l'élément recherché est à l'index 0 ? Mhhh ?
False égal quoi en PHP, déjà ?
Exemple pratique :
```php
'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('red', $array);
echo "Cas 1 : recherche d'une valeur se trouvant à la deuxieme case";
echo "
";
if ($key == FALSE) {
echo "Le tableau ne trouve rien";
} else {
echo "Le tableau a trouvé qq chose à l'index ",$key;
}
echo "
";
echo "Valeur de key=", $key;
echo "
";
echo "
";
echo "Cas 2 : recherche d'une valeur se trouvant à la premiere case";
$array2 = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key2 = array_search('blue', $array2);
echo "
";
if ($key2 == FALSE) {
echo "Le tableau ne trouve rien";
} else {
echo "Le tableau a trouvé qq chose à l'index ",$key2;
}
echo "
";
echo "Valeur de key=", $key2;
?>
```
Nous donne le résultat suivant :
```
Cas 1 : recherche d'une valeur se trouvant à la deuxieme case
Le tableau a trouvé qq chose à l'index 1
Valeur de key=1
Cas 2 : recherche d'une valeur se trouvant à la premiere case
Le tableau ne trouve rien
Valeur de key=0
```
### Conclusion
Bref, un texte à lire, pour éviter quelques chausses trappes et éventuellement passer à autre chose, si cela est possible.
Et comme disait notre ami Xavier Leroy : "Un peu de programmation nous éloigne des mathématiques, beaucoup de programmation nous y ramène".