想法如何将大量参数传递给方法?

时间:2015-11-29 12:11:42

标签: php

所以,这肯定不行:

$this->callMe ($x, $y, $color, $method = 'default', $colordeep = '32')

这可能会更好:

$this->callMe (array('x' => $x, 'y' => $y, 'color' => $color))

但是,在这种情况下,我还必须始终寻找参数。是否有更好的方法来传递大量参数?

1 个答案:

答案 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”或其他东西,但我喜欢自定义函数,因为最后我将它扩展为还包含必填字段,错误消息和响应等。