Mailinglisten-Archive |
Martin Samesch schrieb > Ohne mir das jetzt konkret ueberlegt zu haben, koennte es bei > einer Kombination von fuenf voneinander abhaengigen > Fallunterscheidungen aber etwas aufwendig werden, wenn > ich alle Kombinationen beruecksichtigen will (?). OK ein Beispiel mit 8 aufeinander aufbauenden Datenbankabfragen: if(DA == "a") { if(DA == "b") { if(DA == "c") { if(DA == "d") { if(DA == "e") { if{DA == "f") { if(DA == "g") { if(DA == "h") { // tu was } else { // Fehlerhandling "h" } } else { // Fehlerhandling "g" } } else { // Fehlerhandling "f" } } else { // Fehlerhandling "e" } } else { // Fehlerhandling "d" } } else { // Fehlerhandling "c" } } else { // Fehlerhandling "b" } } else { // Fehlerhandling "a" } Man könnte z.B. alternativ schreiben if(DA == "a") { $a = 1; } else { fehler_handling("a"); } if($a == 1) { if(DA == "b") { $b = 1; } else { fehler_handling("b"); } } [...] if($g == 1) { if(DA == "h") { // tu was } else { fehler_handling("c"); } } Man könnte hier auch einfach schreiben: $bedingungen = array("a", "b", "c", "d", "e", "f", "g", "h"); $max = count($bedingungen); for($i = 0; $i < $max, $i++) { if(DA != $bedingungen[$i]) { fehlerhandling($bedingung[$i]); break; } if($max-1 == $i) { // tu was; } } Man könnte die einzelnen Abfragen auch in Funktionen stecken usw. Kurz: es gibt viele Möglichkeiten unübersichtlichen, tief verschachtelten Code zu vermeiden, ohne das sich deshalb z.B. die Anzahl der Datenbankzugriffe erhöht. Das Beispiel krankt insgesamt natürlich daran, daß man eine entsprechende Logik in der Regel einfach per AND in der WHERE-Klausel der Datenbankabfrage erschlagen würde.
php::bar PHP Wiki - Listenarchive