Mit einem assoziativen array als php-Funktion Eingang

Gelegentlich Schreibe ich eine PHP-Funktion mit einem einzigen Eingang, ein assoziatives array mit allen von der Funktion der Eingänge. Dies hat Vorteile wie nicht zu müssen, zu erinnern, die richtige Reihenfolge der Eingänge, aber ich habe auch bemerkt, dass es macht die Umsetzung von änderungen, um große codebase viel einfacher; wenn ich hinzufügen müssen, um eine andere variable, und die variable muss durch 4 oder 5 bereits vorhandenen Funktionen, es ist viel einfacher, wenn ich nur kleben Sie es in das array und Durchlauf es entlang.

Meine Frage ist, ist es ein Nachteil, dies zu tun?

Ich nur selten sehen die Funktionen so geschrieben in den Beispielen, oder in open source, die ich verwenden, das führt mich zu glauben, es ist wahrscheinlich ein Nachteil. Wenn es nicht ein Grund, es nicht zu tun, dann warum schreiben Sie nicht alle Funktionen auf diese Weise?

UPDATE

Danke für all Eure Antworten. Es sieht aus wie zwei große Probleme hervor:

Die Lesbarkeit des Codes - unmöglich zu sagen, welche Variablen in einer Funktion sind, was Sie für

Variable kriechen - Könnte wind-up mit massiven arrays Prellen von einer Funktion zur nächsten; man sollte nicht die übergabe von Parametern an Funktionen, die nicht brauchen, Sie

Sind die beiden großen Punkte, die ich nicht nachdenken.

Es scheint, die Allgemeine Kernaussage ist auch, dass code, wo dies ein Problem ist, muss wohl umgebaut werden zu einer Klasse. Leider wird in diesem Projekt eine solche Umgestaltung ist über das Ziel hinaus, aber ich denke auch, dass Bill Karwin die Lösung ist gut - übergeben Sie ein array von optionalen Variablen

  • Aus reinem Interesse, kannst du eine Beispiel-Funktion, die Sie schreiben würde? 🙂
  • mehr wie "aus morbider Neugier"? 🙂
  • Also statt der Funktion myFunc($var1, $var2, $var3, $var4 ...) {} Sie hätten function myFunc($params) { } und dann die Referenz über $params['var1'], usw
  • Wenn du neugierig bist, ist das Konzept der "named Parameter" diskutiert wurde mehrere Male von der PHP-internals-team, aber es war letztlich abgelehnt.
Schreibe einen Kommentar