Estaba pasando por algunas funciones de PHP y no pude evitar notar lo siguiente:
<?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)
?>
Observe la función array_key_exists()
y property_exists()
. En el primero, el nombre de la propiedad (clave para una matriz) es el primer parámetro, mientras que en el segundo es el segundo parámetro. Por intuición, uno esperaría que tuvieran una firma similar. Esto puede generar confusión y el tiempo de desarrollo puede desperdiciarse haciendo correcciones de este tipo.
¿No debería PHP, o cualquier otro lenguaje, considerar hacer consistentes las firmas de funciones relacionadas?