当您必须将多个值传递给函数时,定义方法签名的最佳方法是什么,其中一些可能是可选的.在将来,我可能需要传递更多变量或减去一些传递给函数的值.
例如:(电话和地址是可选的)
function addInfo( $name, $dob, $phone='', $address='' ) {
// Store data
}
addInfo( 'username', '01-01-2000', '1111111' ); // address is not given
要么
function addInfo( $info ) {
// Store data
}
$info = array( 'name'=>'username',
'dob'=>'01-01-2000',
'phone'=>'1111111',
'address'=>'' );
addInfo( $info );
解决方法:
还有一种类似OOP的方式:使用字段’name’,’dob’,’phone’,’address’创建参数对象(例如,person)(这在Fowler的“Refactoring”一书中称为引入参数对象重构).
在您的情况下,这似乎是合适的,因为您传递给函数的所有字段实际上都与一个对象相关.