ฉันกำลังใช้งานฟังก์ชั่น 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 หรือภาษาใด ๆ สำหรับเรื่องนั้นไม่ควรพิจารณาทำให้การใช้งานที่เกี่ยวข้องนั้นสอดคล้องกัน?