Eu estava passando por algumas funções do PHP e não pude deixar de notar o seguinte:
<?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 a função array_key_exists()
e property_exists()
. No primeiro, o nome da propriedade (chave para uma matriz) é o primeiro parâmetro, enquanto no segundo é o segundo parâmetro. Por intuição, seria de esperar que eles tivessem assinatura semelhante. Isso pode causar confusão e o tempo de desenvolvimento pode ser desperdiçado, fazendo correções desse tipo.
O PHP ou qualquer outra linguagem não deveria considerar a consistência das assinaturas de funções relacionadas?