dimanche 17 novembre 2013

Point sur l'ordre des paramètres dans les fonctions PHP

Je ne sais pas pourquoi, mais j'ai toujours eu du mal à retenir l'ordre des arguments de la fonction strpos ! Le premier argument, c'est la chaîne dans laquelle on va rechercher ou est-ce la chaîne que l'on cherche ?

Du coup, je vais régulièrement regarder la doc pour être sûr de moi. D'ailleurs, et comme le dit si bien Bronco, celui qui a imaginé les noms de paramètres "haystack" et "needle", n'a pas été des plus inspirés.

Alors, j'ai fait un petit point sur les paramètres des fonctions, afin de retenir une liste qui ne respecteraient pas une certaine logique.De mon point de vue, le premier paramètre devrait être le paramètre à analyser/traiter. Donc, pour strpos, on est bien dans ce cas : le premier paramètre est la chaîne dans laquelle on va rechercher. C'est le cas aussi pour des fonctions comme strtr ou array_column.

Par contre, voici une liste de fonctions à retenir, qui inverse cette logique. En retenant cette liste, vous n'aurez plus besoin de regarder la doc.
On pourrait se dire : non, ce n'est pas toujours illogique comme ordre, car le nom de la fonction est explicite. 
  • array_key_exists : on recherche une clef dans un tableau, donc la clef est le paramètre principal
  • array_map : on applique une fonction sur les éléments du tableau, donc 1er : callback
  • array_search : on recherche une valeur dans un tableau, donc 1er : la valeur à rechercher
  • in_array : est-ce qu'une valeur est dans un tableau, donc 1er : la valeur à recherche
  • pour les fonctions de formatage, la paramètre principal est le format
  • str_replace : on remplace une chaîne par une autre dans une dernière
En revanche, la fonction strpos n'est pas très explicite, et si on devait l'expliquer, on dirait : cette fonction recherche la position d'une chaîne dans une autre. Donc, finalement, le premier paramètre devrait être la chaîne à rechercher (d'où la confusion régulière).

Voyez-vous, en se basant sur le nom de la fonction (quoique strpos, ce n'est pas très explicite), on ne peut pas garantir l'ordre des paramètres.

C'est pourquoi, je vous propose de retenir ma liste de fonctions "irrégulières", en partant du principe que pour les autres, le premier paramètre est le paramètre à analyser/traiter.

Au passage, on notera que l'on peut inverser les paramètre de "implode", car à une période de la vie de PHP, l'ordre des paramètres était différent.

Un autre groupe de fonctions ne me semble pas très "logique", c'est les fonctions de filtrage où souvent le premier paramètre est le type, alors que cela devrait plutôt être les variables ou le nom des variables.

Enfin, comme pour les fonctions de formatage, on notera que les expressions rationnelles commencent par le masque.

Aucun commentaire:

Enregistrer un commentaire