所以,这肯定不行:
$this->callMe ($x, $y, $color, $method = 'default', $colordeep = '32')
这可能会更好:
$this->callMe (array('x' => $x, 'y' => $y, 'color' => $color))
但是,在这种情况下,我还必须始终寻找参数。是否有更好的方法来传递大量参数?
答案 0 :(得分:1)
我经常遇到这个问题。特别是对于现在只需要三个参数的函数,但是在我继续开发之后可能需要多达10个。所以:
/** in Party class **/
protected void OnMemberDeath( )
{
if( aliveCount > 1 )
{
AdjustWorldObject( );
aliveCount--;
}
else
{
ResetWorldObject( );
if( OnPartyDeath != null ) OnPartyDeath( ); // Event
else print( "Party died but event had no subscriptions!" );
}
}
/** in PlayerParty class **/
new void OnMemberDeath( )
{
if( aliveCount > 1 )
{
AdjustWorldObject( );
AdjustCombatUI( ); // The first line I want to add
}
else
{
ResetWorldObject( );
ResetCombatUI( ); // The second line I want to add
if( OnPartyDeath != null ) OnPartyDeath( ); // Event
else print( "Party died but event had no subscriptions!" );
}
}
这样的事情是我的解决方案。我传递一个数组,在函数的开头我只声明默认值然后应用这两个。您可能也可以使用“array_merge”或其他东西,但我喜欢自定义函数,因为最后我将它扩展为还包含必填字段,错误消息和响应等。