In der heutigen Folge beschäftigen wir uns mit dem Thema "Bedingungen". Wann ist es sinnvoll welches Konstrukt zu benutzen, welches Konstrukt erhöht die Lesbarkeit des Quellcodes.
if/else vs. ternary operator vs. switch
Der "Ternäre Operator"
Der ternary operator(ternäre Operator) bietet sich immer dann an, wenn die gesamte Bedingung, inkl. der beiden Alternativen sich noch übersichtlich in einer Zeile unterbringen lässt, oder er als Teil einer Ausgabe verwendet wird.
-
<?php -
-
// Erste Version -
($Zahl < 1) ? echo 'Kleiner 1' : echo 'Groesser oder gleich 1';
-
// Zweite Version -
echo (($Zahl < 1) ? 'Kleiner' : 'Groesser oder gleich') . ' 1';
-
// Dies ist unuebersichtlich: -
($Zahl < 1 || $Zahl == 0.24 || $Tag == 'Dienstag' || $Die_Antwort_auf_alle_Fragen == 42) ? echo 'Hier dann eine ganz lange Ausgabe, die verhindert, dass die Zeile sich innerhalb der üblichen Bildschirmbreiten anzeigen lässt' : echo 'Nix';
-
-
?>
if-else-Vergleich
Der Vergleich mit einem If-Else-Konstrukt wird benutzt, wenn innerhalt des jeweiligen Astes mehrere Operationen durchgeführt werden sollen, oder aber wenn es nur eine If-Bedingung gibt. Dies erhöht die Übersichtlichkeit ungemein, erst recht wenn man darauf verzichtet, eine einfache If-Bedingung in eine Zeile zu quetschen:
-
<?php -
-
// Sehr unuebersichtlich: -
if ($Zahl < 1) echo 'Kleiner 1';
-
-
// Viel strukturierter: -
if ($Zahl < 1) {
-
echo 'Kleiner 1';
-
} -
-
// Eine typisches If-Else-Konstrukt -
if ($Zahl < 1) {
-
// Aktion 1 -
// Aktion 2 -
// ... -
} else {
-
// Aktion 1 -
// Aktion 2 -
// ... -
} -
-
?>
Es gibt nur wenige Gründe, warum man mehr als zwei Verzweigungsäste in einem solchen Konstrukt haben sollte. Nur wenn mehrere Bedingungen überprüft werden sollen, inklusive deren Kombinationen, ist eine If-ElseIf-If-Konstruktion nötig:
-
<?php -
-
if ($Zahl < 1 && $Tag == 'Montag') {
-
// Aktion 1 -
} elseif ($Zahl < 1 /*Tag nicht prüfen*/) {
-
// Aktion 2 -
} else {
-
// Aktion 3 -
} -
-
?>
switch
Eine switch-Anweisung verdeutlicht die logische Struktur eines Quelltextes viel besser, als eine lange If-Else-Verschachtelung:
-
<?php -
switch ($Zahl) {
-
case 0:
-
// Aktion 1 -
// Aktion 2 -
break;
-
case 1:
-
// Aktion 1 -
// Aktion 2 -
break;
-
case 2:
-
// Aktion 1 -
// Aktion 2 -
break;
-
case 3:
-
// Aktion 1 -
// Aktion 2 -
break;
-
default:
-
// Falls nichts anderes greift... -
break;
-
} -
-
// Hier die If-Else-Variante: -
-
if ($Zahl == 0) {
-
// Aktion 1 -
// Aktion 2 -
} elseif ($Zahl == 1) {
-
// Aktion 1 -
// Aktion 2 -
} elseif ($Zahl == 2) {
-
// Aktion 1 -
// Aktion 2 -
} elseif ($Zahl == 3) {
-
// Aktion 1 -
// Aktion 2 -
} else {
-
// Falls nichts anderes greift... -
} -
-
?>
Ein switch-Block rückt die Bedingungen sehr deutlich ins Blickfeld und ermöglicht es, diese schneller zu erfassen.
Willkommen zum zweiten Teil meiner kleinen HowTo-Serie. Heute werde ich Euch zeigen, wie man einem Android-Handy zu einem Zugang zum OpenVPN-Server aus dem 



