PHP-Funktionen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 44: | Zeile 44: | ||
Das geht besser: Wir definieren eine Funktion: | Das geht besser: Wir definieren eine Funktion: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
function brutto($netto){ | function brutto(float $netto){ | ||
return $netto * 1.19; | return $netto * 1.19; | ||
} | } | ||
Zeile 53: | Zeile 53: | ||
Wenn wir den Bruttopreis brauchen, dann schreiben wir: <code>brutto($nettoChair) ... brutto($nettoTable)...</code>. | Wenn wir den Bruttopreis brauchen, dann schreiben wir: <code>brutto($nettoChair) ... brutto($nettoTable)...</code>. | ||
Bei einer Steueränderung müssen wir nur die Funktion brutto() ändern. | Bei einer Steueränderung müssen wir nur die Funktion brutto() ändern. | ||
== Funktion in Funktion verwenden == | |||
* Wir wollen eine Funktion, die die Summe von 4 Summanden ermittelt. | |||
* Wir habe schon eine Funktion, die die Summe von 2 Summanden berechnet: siehe oben. | |||
* Du Summe von 4 ist die Summe von den 2 ersten Summanden + die Summe von den 2 letzten Summen. | |||
<syntaxhighlight lang="php"> | |||
function sum2(float $a, $float $b){ | |||
return $netto * 1.19; | |||
} | |||
function sum4(float $a, $float $b, float $c, $float $d){ | |||
$s1 = sum2($a, $b); | |||
$s2 = sum2($c, $d); | |||
$rc = sum2($s1, $s2); | |||
return $rc; | |||
} | |||
echo "Summe 12..15: ", sum4(12, 13, 14, 15), "\n"; | |||
</syntaxhighlight> | |||
* Noch eleganter ist die Zusammenfassung: | |||
<syntaxhighlight lang="php"> | |||
function sum4(float $a, $float $b, float $c, $float $d){ | |||
$rc = sum2(sum2($a, $b), sum2($c, $d)); | |||
return $rc; | |||
} | |||
</syntaxhighlight> | |||
== Aufgaben == | == Aufgaben == |
Version vom 27. Oktober 2023, 17:44 Uhr
Links
Erläuterung
- Berechnungen können in Funktionen gebündelt werden. Das erhöht die Übersicht und die Wiederverwertbarkeit.
- PHP-Funktionen funktionieren wie mathematische Funktionen:
<?php
function sum(float $a, float $b): float{
$rc = $a + $b;
return $rc;
}
echo sum(1237.99, 4399.5), "\n";
- Die Funktion hat den Namen sum.
- Es gibt zwei Parameter, die der Funktion mitteilen, was summiert werden soll.
- Optional kann vor dem Parameter der Datentyp des Parameters angegeben werden, hier:
float $a
- Optional kann vor dem Parameter der Datentyp des Parameters angegeben werden, hier:
- Optional kann nach der ')' der Datentyp des Rückgabewertes angegeben werden, hier:
float
- Danach folgt immer ein Blockanfang '{', der am Ende der Funktion mit '}' geschlossen wird.
- Es wird der Wert der Parameter addiert und der Variable $rc zugewiesen.
- Das Ergebnis wird dann mit dem Schlüsselwort return "abgeliefert".
- Mit dem ersten echo wird durch "Aufruf" der Funktion die Summe von 1237.99 und 4399.5 berechnet und diese ausgegeben.
Parameter
- Parameter sind spezielle Variablen. Der Unterschied zu "normalen" Variablen: Sie bekommen ihren Wert beim Aufruf der Funktion.
- Im Beispiel hat die Funktion sum zwei Parameter $a und $b.
- Beim Aufruf
sum(1237.99, 4399.5)
passiert folgendes:$a = 1237.99; $b = 4399.5
. - Dann wird der Funktionsrumpf abgearbeitet:
$rc = $a + $b; return $rc;
- echo bekommt damit den Wert 5637.49.
Wiederverwertbarkeit
Ziel sollte es immer sein: ein Programm sollte den Code für eine "Berechnung" nur genau einmal enthalten.
Beispiel: Ein Programm arbeitet mit Bruttopreisen, die aus Nettopreis und Mehrwertsteuer bestehen.
Die Berechnung ist immer gleich: $brutto = $netto * 1.19;
. Wenn sich die Mehrwertsteuer ändert, dann müssen alle Stellen mit dieser Berechnung geändert werden.
Das geht besser: Wir definieren eine Funktion:
function brutto(float $netto){
return $netto * 1.19;
}
$nettoChair = 37.44;
$nettoTable = 99.22;
echo "Stuhl: ", brutto($nettoChair), " Tisch: ", brutto($nettoTable), "\n";
Wenn wir den Bruttopreis brauchen, dann schreiben wir: brutto($nettoChair) ... brutto($nettoTable)...
.
Bei einer Steueränderung müssen wir nur die Funktion brutto() ändern.
Funktion in Funktion verwenden
- Wir wollen eine Funktion, die die Summe von 4 Summanden ermittelt.
- Wir habe schon eine Funktion, die die Summe von 2 Summanden berechnet: siehe oben.
- Du Summe von 4 ist die Summe von den 2 ersten Summanden + die Summe von den 2 letzten Summen.
function sum2(float $a, $float $b){
return $netto * 1.19;
}
function sum4(float $a, $float $b, float $c, $float $d){
$s1 = sum2($a, $b);
$s2 = sum2($c, $d);
$rc = sum2($s1, $s2);
return $rc;
}
echo "Summe 12..15: ", sum4(12, 13, 14, 15), "\n";
- Noch eleganter ist die Zusammenfassung:
function sum4(float $a, $float $b, float $c, $float $d){
$rc = sum2(sum2($a, $b), sum2($c, $d));
return $rc;
}
Aufgaben
Definiere nach diesem Schema weitere Funktionen:
- eine Funktion, die den Durchnitt von 2 Werten berechnet (Summe geteilt durch 2).
- eine Funktion, die den Durchnitt von 3 Werten berechnet.
- eine Funktion, die das Volumen einer Kugel berechnet. Die Formel lautet: Volumen einer Kugel mit Radius ist 4/3*pi*r³.
- eine Funktion, die die Oberfläche einer Kugel berechnet: Oberfläche einer Kugel mit Radius r ist 4*pi*r².