mageekblog Le blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies. Peut être...

Aller au contenu | Aller au menu | Aller à la recherche

CV | Twitter | Linkedin Projets

PHP manque de plus en plus de cohérence

PHP est un langage connu pour avoir un certain nombre d'incohérences, à la fois au niveau de sa syntaxe et de son fonctionnement.

Au niveau syntaxique, il y a par exemple le cas des fonctions permettant la manipulation des chaînes de caractères, qui ne suivent pas une convention de nommage rigoureuse.

C'est la raison pour laquelle il existe, par exemple, une fonction strpos() et une fonction str_pad().

L'ordre des arguments peut également être variable d'une fonction à une autre, alors qu'elles sont toutes les deux du même domaine fonctionnel.

Ainsi, array_search() et strpos() permettent toutes deux de localiser un élément parmi plusieurs, mais l'ordre de leurs deux premiers arguments est inversé.

Au niveau de son fonctionnement, les incohérences sont certes moins nombreuses, mais à mon sens plus vicieuses.

Si celle concernant l'impossibilité de spécifier autre chose qu'une classe ou un tableau comme type d'argument pour une fonction ou une méthode n'est pas trop méchante, celle ne permettant pas de définir une méthode de classe abstraite imposée par une interface l'est beaucoup plus.

Autre incohérence pénible, il n'est pas possible d'appeler directement une fonction anonyme ou une fermeture si cette dernière est une propriété d'un objet.

Évidement, cette liste d'incohérence est loin d'être exhaustive, d'autant qu'elle s’enrichit régulièrement grâce aux nouvelles fonctionnalités supportées par le langage au fur et à mesure des versions.

Ainsi, Wilfried Ceron, dont j'ai fais l'interview récemment, m'a permis d'en découvrir une nouvelle, via l'utilisation de la méthode magique __invoke(), disponible depuis PHP 5.3.0.

Lire la suite...

Les fermetures, c'est trop... fermé !

J'utilise actuellement intensivement les fermetures, plus connues sous leur dénomination anglaise closure, dans mes développements PHP.

Elles sont en effet extrêmement bien adapté à mon besoin, mais je viens de découvrir qu'elles ont un inconvénient de taille.

Lire la suite...

Y'a t'il un physicien spécialisé dans l'imagerie parmi mes lecteurs ?

Pour l'un de mes projets chez no parking, j'ai besoin de manipuler des images.

Je suis donc en train de regarder dans le détail la documentation de l'extension imagick de PHP, histoire de comparer cette dernière avec l'extension gd.

Lire la suite...

Migration vers PHP 5.3.1

Je suis passé récement de PHP 5.2.11 à PHP 5.3.1 sur ma machine de développement sous freeBSD.

Je n'ai eu strictement aucun problème jusqu'au redémarrage de ma machine.

En effet, mon gestionnaire de fenêtre, wmii, ne voulait plus démarrer.

Or, il est géré par wmiirc.php, un script écrit en PHP qui me permet d'intéragir avec lui via le protocole du système de fichiers virtuels de plan9.

Lire la suite...

Retour sur les paradoxes

Dans mon précédent billet, j'ai demandé à mes lecteurs de trouver les deux paradoxes contenu dans un morceau de code PHP issue d'un projet open-source français qui à le vent en poupe, j'ai nommé prestashop.

J'avoue que j'ai hésité à donner le nom de ce projet, mais comme je suis le premier à dire que la critique est le meilleur moyen de faire avancer les choses, je peux difficilement faire autrement.

Maintenant que les choses sont claires, je vais maintenant vous dire les deux paradoxes résidant dans ce morceau de code, que bon nombre ont également détecté.

Lire la suite...

- page 1 de 3