PHP Argumente mit variabler Länge?

7

In Python und anderen gibt es eine spezielle Syntax für Argumentlisten mit variabler Länge:

%Vor%

Ich habe das PHP-Handbuch gelesen und es hieß:

  

PHP 4 und höher unterstützt   Argumentlisten mit variabler Länge in   benutzerdefinierte Funktionen. Das ist wirklich   ganz einfach mit func_num_args (),   func_get_arg () und func_get_args ()   Funktionen.

     

Es ist keine spezielle Syntax erforderlich, und   Argumentlisten können immer noch explizit sein   versehen mit Funktionsdefinitionen und   wird sich wie normal verhalten.

Ich bekomme den ersten Teil. Sie können beliebig viele Argumente an eine Funktion übergeben, die keine Argumente annimmt, und sie dann als Array mit func_get_args() usw. abrufen. Ich verstehe jedoch nicht wirklich, was der zweite Teil sagt.

>

Also, meine Frage ist, gibt es eine spezielle Syntax für Argumente mit variabler Länge oder einige bewährte Methoden, von denen ich nichts weiß? Der Ansatz, den das Handbuch vorschlägt, scheint bestenfalls kludgey zu sein und lässt Ihre Funktion so aussehen, als ob sie keine Argumente annimmt (es sei denn, ich tue es falsch). Sollte ich nicht versuchen, diese Sprachfunktion überhaupt zu verwenden?

    
Rafe Kettler 02.01.2011, 15:14
quelle

6 Antworten

10

Im Gegensatz zu Pythons * -Operator oder C #% params -Schlüsselwort müssen Sie in PHP nicht einmal die Argumente mit variabler Länge angeben. Da der zweite Teil beginnt, ist "keine spezielle Syntax erforderlich."

Was den Rest des zweiten Absatzes anbelangt: Wenn Sie alle erforderlichen oder nicht verwandten Argumente vor den Argumenten mit variabler Länge angeben möchten, geben Sie diese in Ihrer Funktionssignatur an, damit Ihre Funktion diese verarbeiten kann. Um die Argumente mit variabler Länge zu erhalten, entfernen Sie die erforderlichen Variablen aus func_get_args() , wie folgt:

%Vor%

Sie müssen das nicht tun (Sie können immer noch von func_get_args() abschneiden und seine verschiedenen Elemente entsprechend verwenden), aber es macht Ihren Code selbstdokumentierender.

    
BoltClock 02.01.2011, 15:18
quelle
18

Hier ist ein realistischeres Beispiel:

%Vor%

Dies nennt man eine variadic Funktion .

    
Alix Axel 02.01.2011 15:36
quelle
6

Seit PHP 5.6 kann eine variable Argumentliste mit dem Operator ... angegeben werden.

%Vor%

Wie Sie sehen, sammelt der Operator ... die Variablenliste von Argumenten in einem Array.

Wenn Sie die Variablenargumente an eine andere Funktion übergeben müssen, kann Ihnen ... immer noch helfen.

%Vor%

Seit PHP 7 kann die variable Liste von Argumenten gezwungen werden, auch all desselben Typs zu sein.

%Vor%     
Daniele Orlando 10.12.2015 15:34
quelle
2

Es gibt keine spezielle Syntax für Argumentfunktionen mit variabler Länge.

Verwenden Sie einfach die Funktionen func_num_args () und func_get_args (), um die Argumente zu erhalten.

Beispiel:

%Vor%     
mauris 02.01.2011 15:20
quelle
1

Der zweite Teil sagt im Grunde, dass sobald Sie anfangen, die Funktionen des variablen Arguments zu benutzen, dann

%Vor%

funktioniert identisch, nur dass die zweite Version 3 Argumente explizit aufgeführt hat. Das ist alles, versuche nicht mehr in eine Manpage zu lesen, als es gibt.

    
Marc B 02.01.2011 16:05
quelle
0

Normalerweise tue ich dies, um zu vermeiden, dass die Funktion geändert wird, und um Fehler in der Reihenfolge der Argumente zu vermeiden.

%Vor%     
ajreal 02.01.2011 15:25
quelle