Je parcourais certaines fonctions PHP et je n'ai pas pu m'empêcher de remarquer ce qui suit:
<?php
function foo(&$var) { }
foo($a); // $a is "created" and assigned to null
$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)
$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>
Remarquez la fonction array_key_exists()
et property_exists()
. Dans le premier, le nom de la propriété (clé d'un tableau) est le premier paramètre tandis que dans le second, c'est le deuxième paramètre. Par intuition, on pourrait s'attendre à ce qu'ils aient une signature similaire. Cela peut prêter à confusion et le temps de développement peut être perdu en faisant des corrections de ce type.
PHP, ou tout autre langage d'ailleurs, ne devrait-il pas envisager de rendre cohérentes les signatures des fonctions associées?