Funktionen mit Default-Parametern

Auch PHP bietet die Möglichkeit Funktionen so zu definieren, dass Parameterwerte mit Standardwerten vorbelegt werden wenn diese beim Aufruf der Funktion nicht angegeben werden. Dies läßt sich bei der Definition von benutzerdefinierten Funktionen über den Funktionskopf festlegen. Der für einen bestimmten Parameter vorgesehene Default-Wert wird in der Parameterliste durch Zuweisung eines Wertes zur Parametervariablen kenntlich gemacht. Dabei ist grundsätzlich nur die Angabe von konstanten Werten – entweder als Wert (z.B. ein String, ein Array oder ein Zahlenwert) oder in Form einer per define definierten Konstanten – erlaubt. Nicht erlaubt ist dagegen die Angabe von Variablen. Ruft man die Funktion ohne Angabe des entsprechenden Parameters auf, so wird die Parametervariable mit dem im Kopf der Funktion angegebenen Wert vorbelegt. Wird der Parameter hingegen beim Aufruf an die Funktion übergeben, so erfolgt diese Vorbelegung nicht – der angegebene Parameterwert wird dann bei der Abarbeitung des Codes genutzt.

Bitte beachten Sie, dass Default-Paramter grundsätzlich am Ende der Parameterliste stehen müssen. Alle Parameter, die einen Default-Wert nutzen sollen, stehen also in Folge bis zum Ende der durch die Funktion genutzten Parameter. Auch eine Unterbrechung von Default-Parametern durch Parameter ohne Default-Angabe ist zu vermeiden, da beim Aufruf fehlende Parameter ohne Default-Angabe durch eine entsprechende Fehlermeldung quittiert wird. Das Problem an solchen Fehlern ist, dass sie nicht auffallen, wenn die Funktion mit allen Parametern aufgerufen wird.

<?php
    // Funktion mit Default-Parametern
    // Die ersten beiden Parameter müssen angeben werden, während
    // der dritte und vierte Parameter mit Standardwerten gefüllt
    // werden, wenn diese beim Aufruf der Funktion nicht angegeben
    // wurden. Hier werden ein String und eine Zahl als Defaultwerte
    // genutzt.
    function produktinfo ($produkt, $preis, $farbe = 'weiss', $anzahl = 6) {
        // Ausgabe der Parameterwerte
        echo 'Produkt: ' . $produkt . '<br>' .
             'Preis: ' . $preis . '<br>' .
             'Farbe: ' . $farbe . '<br>' .
             'Anzahl: ' . $anzahl . '<br>';
    }

    // Aufruf mit den beiden Pflichtparametern
    produktinfo ('Teller', 45);
    // Erster optionaler Parameter
    produktinfo ('Tassen', 39, 'rot');
    // Komplette Parameterliste
    produktinfo ('Suppenteller', 110, 'blau', 12);

    // Definition einer Konstanten zur späteren Verwendung im Script-Code
    define ('F', 42);

    // Array und eine bereits definierte Konstante als Default-Parameter
    function x ($f = F, $optionen = array (42 => 'Sinn des Ganzen', 0 => 'keine Ahnung')) {
        return $optionen[$f];
    }

    // Aufruf ohne Parameter
    echo 'x() = ' . x () . '<br>';
?>

Produkt: Teller
Preis: 45
Farbe: weiss
Anzahl: 6
Produkt: Tassen
Preis: 39
Farbe: rot
Anzahl: 6
Produkt: Suppenteller
Preis: 110
Farbe: blau
Anzahl: 12
x() = Sinn des Ganzen

Letzte Posts aus unserem Forum

Webentwickler Konferenz in Hamburg

Hallo Zusammen, Am 20./21. Mai findet in Hamburg die erste Developer Conference 2011 statt. Wie der Name bereits verrät, handelt die Konferenz rund ... » mehr

von devcon-hamburg am Dienstag, 12. April 2011 16:50 in PHP - noch nicht beantwortet

bedingte Weiterleitung in Kontaktformularen

Hallo zusammen, ich habe ein kleines Problem: Ich brauche bei der Entwicklung eines Kontaktformulares für eine Website eine bedingte Weiterleitung ... » mehr

von scatha am Donnerstag, 10. März 2011 01:12 in PHP - noch nicht beantwortet

Gesucht: Auslesen einer externen Website

Mein vorhaben ist recht simpel aber ich bin php noob (hoffe das entschuldigt es nen bissl xD) und hab kp wie ichs anfangen soll. Und zwar möchte ich ... » mehr

von HeathenMan am Dienstag, 1. Februar 2011 22:57 in PHP - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 3. Februar 2011 14:43 von alm

Hallo, am einfachsten und kompaktesten kann man das mit einem regulären Ausdruck machen. Einfach mal nach der Funktion preg_match_all suchen und den ... » mehr

Zeilenumbruch in der Bildergalerie-Beschriftung

Hallo, die Bildergalerie mit php und js ist super, jedoch möchte ich gern zu meinen Bildern verschiedene Bemerkungen machen und zwar untereinander, ... » mehr

von Sylma am Mittwoch, 26. Januar 2011 01:13 in PHP - bisher 1 Antwort
Letzter Beitrag: Freitag, 28. Januar 2011 10:16 von alm

Hallo, ich nehme an, dass \n im Beschreibungstext nicht funktioniert aber versuchen kann man es. Ansonsten: Schon mal mit einer UTF-Sequenz ... » mehr

Bildergalerie mehrfach einbinden

Hallo alle miteinander, ich hoffe, dass mit hier jemand helfen kann. Ich habe mir hier von der Seite die Bildergalerie mit JS und PHP ... » mehr

von Saga am Dienstag, 28. Dezember 2010 09:57 in PHP - bisher 6 Antworten
Letzter Beitrag: Mittwoch, 29. Dezember 2010 20:50 von Saga

Hallo Alex, die Warnung ist zwar jetzt durch das isset weg, aber die Daten werden immer noch nicht übergeben. (Nachdem ich durch das isset die ... » mehr

¬ Tutorials



¬ Insolvenzrecht