我正在查看一些PHP函数,但我不禁注意到以下内容:
<?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)
?>
注意array_key_exists()
和property_exists()
功能。在第一个中,属性名(数组的键)是第一个参数,而在第二个中,属性名是第二个参数。凭直觉,人们会期望它们具有相似的签名。这可能会导致混淆,并且通过进行此类更正可能会浪费显影时间。
PHP或任何与此相关的语言是否不应该考虑使相关功能的签名保持一致?