»TIPPS >PHP

 
 

 

Design Patterns
 

 

Design Patterns - oder auch Entwurfsmuster genannt - dienen der weiteren Abstraktion von Klassen in der objektorientierten Programmierung. Ein verständliches Beispiel ist die abstrakte Fabrik, die dazu dient eine Klasse dynamisch auszuwählen:

class eins{
  protected $Ausgabe;
  // der Konstruktor
  function __construct() {
     $this->Ausgabe = "Ausgabe eins";   }
  function GibAus(){
    return $this->Ausgabe;  }
}
class zwei extends eins{
  // der Konstruktor
  function __construct() {
    $this->Ausgabe = "Ausgabe zwei";   }
}
class Auswahl{
  function Fabrik($Klasse){
    switch($Klasse){
    case "eins":
      $class = "eins";
      break;
    case "zwei":
      $class = "zwei";
      break;
    default:
      throw new Exception
      ("Unbekannte Klasse");
      break;
    }
    return new $class;
  }
}
$Ausgabe1 = Auswahl::Fabrik("eins");
echo $Ausgabe1->GibAus(); // Ausgabe: Ausgabe eins
$Ausgabe2 = Auswahl::Fabrik("zwei");
echo $Ausgabe2->GibAus(); // Ausgabe: Ausgabe zwei

 

Dieses Beispiel ist natürlich keine sinnvolle Anwendung und man möge sich fragen, wozu das gut sei. Ein wirklich sinnvoller Einsatz wäre aber z.B. die Kapselung von Datenbankabfragen, um eine Anwendung datenbankunabhängig zu erstellen.

 

Variable Variablen
 

 

Vielleicht ist ja der ein oder andere schon einmal auf seltsame Variablen gestossen, wie z.B. die variablen Variablen. Eigentlich sind sie fast immer durch ein Array zu ersetzen, aber es ist doch gut zu wissen, was das soll:

$var1 = "dies";
$var2 = "ist";
$var3 = "ein";
$var4 = "Test";
for ($i=1; $i<=4; $i++){
  echo ${"var" . $i} . " "; // Ausgabe: "dies ist ein Test"
}

 

oder auch (vereinfacht):

$var1 = "Variableninhalt 1";
$var2 = "Variableninhalt 2";
$var = "var1";
echo $$var; // Ausgabe: "Variableninhalt 1"
$var = "var2";
echo $$var; // Ausgabe: "Variableninhalt 2"

 

Durch den variablen Bezeichner können z.B. Benutzereingaben verarbeitet werden, da solche Variablen zur Laufzeit ermittelt und abgefragt werden.

Zu beachten ist, dass variable Variablen nicht für superglobale Arrays (z.B: $_GET) verwendet werden können.