私はいくつかの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()
and property_exists()
関数に注目してください。最初のものでは、プロパティ名(配列のキー)が最初のパラメーターであり、2番目のものでは2番目のパラメーターです。直観的には、彼らは同様の署名を持っていることを期待するでしょう。これは混乱を招く可能性があり、このタイプの修正を行うと開発時間が無駄になる可能性があります。
PHPやそのような言語は、関連する関数の署名の一貫性を考慮すべきではありませんか?