Frage zu "THIS_SCRIPT"

Denk doch mal drüber nach:

Wenn in THIS_SCRIPT der String 'forumdisplay' drin steht, wird die if-Condition geprüft. Ist diese auch erfüllt (als in $forumid eine 1 drin), wird der Rest übersprungen, da dort ein break; im Code-Body steht. Das heißt, dass weder 'index' noch 'impressum' oder 'kontakt' geprüft noch ausgeführt werden.

Wenn aber in THIS_SCRIPT der String 'forumdisplay' drin steht, die if-Condition aber nicht erfüllt ist, findet der fallthru statt und es geht zu 'index'. Das bedeutet, wenn $forumid zb. 4 ist, dann wird der Code-Block von 'index' ausgeführt.

Wenn in THIS_SCRIPT aber kein 'forumdisplay' steht, geht's zum nächsten case, der 'index' ist. Wenn der erfüllt ist gehts in den Code-Block rein. Ansonsten zum nächsten und so weiter.

switch()-case macht nichts anderes als jede Menge if's-elseif's. Das könnte man also code-technisch auch so umsetzen:

PHP:
if (THIS_SCRIPT == 'index')
{
   $keywords = '<meta name="keywords" content="blablabla" />';
   $description = '<meta name="description" content="blablabla" />';
}
else if (THIS_SCRIPT == 'impressum')
{
   $keywords = '<meta name="keywords" content="blablabla" />';
   $description = '<meta name="description" content="blablabla" />';
}
else if (THIS_SCRIPT == 'kontakt')
{
   $keywords = '<meta name="keywords" content="blablabla" />';
   $description = '<meta name="description" content="blablabla" />';
}
else if(THIS_SCRIPT == 'forumdisplay')
{
  if($forumid == 1)
  {
     $keywords = '<meta name="keywords" content="blablabla" />';
     $description = '<meta name="description" content="blablabla" />';
  }
  else
  {
     // halt irgendwas anderes....
  }
}
else
{
  // ein völlig anderes define....
}
 
Das Prinzip habe ich verstanden. Danke! :)

Wäre dieser Code Ressourcentechnisch mit dem anderen (case) vergleichbar? Welchen würdest du verwenden um Ressourcen zu sparen?
 
Das Prinzip habe ich verstanden. Danke! :)

Bitte, gern geschehen.

Wäre dieser Code Ressourcentechnisch mit dem anderen (case) vergleichbar?

Nein, einen fallthru mit if-Conditions nachzubauen würde in einem AND/OR-Disaster enden, bei dem keiner mehr versteht, was eigentlich bezweckt ist ;-)

Welchen würdest du verwenden um Ressourcen zu sparen?

Ich würde switch verwenden. Der Performance-Unterschied ist zwar gering, aber vorhanden. Außerdem sieht switch irgendwie schöner aus und man kann damit gegenüber Java (zumindest Version kleiner 7) protzen, weil das keine Strings in switch zulässt ;-)

Und schon wieder schamlose Eigenwerbung: https://github.com/saftmeister/php-...aster/45-switch-ist-schneller-als-if/index.md (mit Hilfe von SkyDevMent)
 
Zurück