Switch Case oder If else

ciberjoerg

Erfahrenes Mitglied
Ich wollte mal fragen was Technisch gesehen besser für eine Navigation ist.

eine switch case funktion,
PHP:
switch($form){

default:
include("templates/nachrichten.php");
break;

case eingang:
include("templates/nachrichten.php");
break;

case ausgang:
include("templates/postausgang.php");
break;

case gelesen:
include("templates/gelesen.php");
break;

case newmessage:
include("templates/newmessage.php");
break;

case showin:
include("templates/showin.php");
break;

case showout:
include("templates/showout.php");
break;

case "showfavign":
include("templates/showfavign.php");
break;
}

oder eine if else funktion?
PHP:
<?php 
          if($_GET[form]){
              include"db/".$_GET[form].".php";
          }
          
          elseif($_GET[form] == ""){
              include"db/news.php";
          }
          
              ?>

Ich hatte mit der Switch Case variante üble probleme mit dem einladen der files. Es hat nie funktioniert. Was haltet ihr von den jeweiligen funktionen?
 
Hey,

ich kann dir leider nichts zum Unterschied dieser beiden sagen (performancemäßig)
aber in deinem Beispiel,
könntest du alle Dateien in einem Array ablegen und dann die inarray() Funktion nutzen.
Das würde den Code deutlich kürzen.

bo
 
Zulange Kontrollkonstrukte, ich würde keins von beiden nehmen...

PHP:
<?php
$whitelist = array(
    'eingang' => 'nachrichten.php',
    'showin' => 'showin.php',
    'showout' => 'showout.php'
);

if(isset($whitelist[$_GET['form']]))
{
  // include
}
else
{
  // default
}
?>

So hast du immer noch die kurze und einfache Kontrollstruktur, verhinderst aber durch die Whitelist blindes Includen und dass die Leute evtl. sogar Erfolg haben Dateinamen bei dir einzuschleusen ;)

Die zweite Möglichkeit die du auflistest, ist hochgradig unsicher...
 
@ Felix
Wenn ich dein beispiel verwende, wie muss ich das dann machen mit dem include? so oder?
PHP:
if(isset($whitelist[$_GET['form']]))
{
  include $whitelist;
}
else
{
  include"db/news.php";
}
 
Die inarray() funktion sagt mir garnichts.

http://php.net/manual/de/function.in-array.php


Ein kurzer Wink bei Google ;)
Die Funktion gibt nur an, ob sich ein Wert in einem Array befindet.

Ich denk mal das die if else Funktion evtl auch recht kurz ist.
Irgendwie macht der Satz keinen Sinn ;)
Welches if-else meinst du jetzt?
Unsers?

Mit dem Beispielen, die "wir" dir gegeben haben, ist es leichter,
Seiten hinzuzufügen oder zu entfernen.


bo
 
PHP:
if(isset($whitelist[$_GET['form']]))
{
  include $whitelist[$_GET['form']];
}
else
{
  include"db/news.php";
}

Dafür muss dann natürlich das Array den Pfad bis zur Datei kennen.
 
Zurück