Я переглядав деякі функції 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 чи будь-яка мова з цього питання вважати послідовними підписи відповідних функцій?