Alternative zur Parameterübergabe in PHP

Man sieht es leider sehr oft und nicht nur in PHP: Klassen und Funktionen mit meterlangen Parameterlisten. Nicht nur, dass das total unübersichtlich ist, es ist auch ggfs. problematisch bei der Vererbung, bei Funktionsaufrufen, etc.

Hier ein Beispiel:

1, 'b'=>2), $bool=false, $really = null){
    }
}
new foo('foo', 12,  array('a'=>1, 'b'=>2), true, null);

Auch wenn es wahrscheinlich den Meisten wohl offensichtlich erscheint: Hier ist mein Vorschlag und ein Beispiel für eine übersichtliche Parameterübergabe mit Default-Werten per Array:

 [
                    'a' => 1,
                    'b' => 2
            ],
            'bool' => false,
            'name' => 'foo',
            'number' => 12,
            'really' => null
        ];
        $this->params = array_merge($defaultParams, $params);
    }
}
new foo(['bool' => true]);

Vorteile dieser Art Parameterübergabe: In einem assoziativen Array ist die Reihenfolge der Parameter egal. Es kann also nicht vorkommen, dass „bool“ und „really“ vertauscht werden. Der Code ist besser strukturiert und lesbar und es funktioniert auch wunderbar mit mehrfacher Vererbung.
Weiteres Plus: Möchte man nur „bool“ auf true setzen, kann man den Rest einfach weglassen (siehe Beispiel)

Nachteile: Mehr Schreibarbeit, mehr Sonderzeichen, array_merge „frisst“ ein wenig Performance (ist aber zu vernachlässigen)