Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Praxis – Lebewesen




Hier ein abschließendes Beispiel zu den OOP-Erweiterungen, damit Sie sich ein Bild davon machen können, welch schöpferischer Akt sich im Einsatz objektorientierter Programmierung verbirgt.

<?php

// Schnittstelle
// Gewährleistet die Kommunikation zwischen Klassen
interface Wachstum {
  // Zu implementierende Methode
  function altern();
}

// Abstraktion einer Klasse
abstract class Lebewesen implements Wachstum {
  // Eigenschaften schützen, sodass über ein
  // Objekt kein direkter Zugriff möglich ist!
  protected $alter = 0;
  protected $geschlecht;

  public function altern(){}

  public final function getAlter() {
    return $this->alter;
  }
}

// Klasse Mensch wird durch die Superklasse
// Lebewesen erweitert (Vererbung)
class Mensch extends Lebewesen {
  protected static $vorfahre = "Affe";
  protected $name;
  
  // Konstruktor
  public function __construct($name, $geschlecht) {
    $this->name = $name;
    $this->geschlecht = $geschlecht;
    $this->altern();
  }
  
  // Destruktor
  public function __destruct() {
    echo "<br>...und so scheidet ".$this->name." dahin";
  }
  
  // Finale Methoden
  public final function altern() {
    $this->alter++;
  }
  
  public final function getName() {
    return $this->name;
  }
  
  public function umbenennen($neuerName) {
    $this->name = $neuerName;
  }
  
  public function geburtstagFeiern() {
    $this->altern();
    echo "trööööt";
  }
  
  // Statische Methoden
  public static final function neueEvolutionstheorie($neuerVorfahre) {
    Mensch::$vorfahre = $neuerVorfahre;
  }
  
  public static final function getVorfahre() {
    return Mensch::$vorfahre;
  }
}

// Klasse Deutscher erbt von Mensch
class Deutscher extends Mensch {
  public function __construct($name, $geschlecht) {
    parent::__construct($name, $geschlecht);
  }
  
  public function umbenennen($neuerName, $geduldsfaden=false) {
    $erfolg = $this->behoerdengang($geduldsfaden);
    if ($erfolg) $this->name = $neuerName;
  }

  // Private Methode
  private function behoerdengang($geduldsfaden) {
    try {
     if (!$geduldsfaden)
      throw new Exception("Umbennenung fehlgeschlagen!");
      return true;
    } catch (Exception $prop) {
      echo $prop->getMessage()."<br>";
      return false;
    }
  }
}


// Autor erzeugen (Objekt)
$autor = new Mensch("Matthias", "m");

// Auf die Methode getName() zugreifen
echo $autor->getName()."<br>";

// Autor umbenennen
$autor->umbenennen("Matze");

// Neuen Namen ausgeben
echo "Neuer Name: ".$autor->getName()."<br>";

// Folgende Codezeile erzeugt einen Fehler
// da die Eigenschaft geschützt ist!
// echo $autor->geschlecht;

// An das Alter gelangt man mit Hilfe der
// Funktion getAlter()
echo "Alter des Autors: " . $autor->getAlter() ."<br>";

// Stammt Autor vom Mensch ab?
if ($autor instanceof Mensch) {
echo $autor->getName()." ist ein Mensch!<br>";
}

// Wer sind die Vorfahren der Menschen
echo "Der Mensch ist ein Nachfahre von ".Mensch::getVorfahre()."<br>";

// Neue Theorie
Mensch::neueEvolutionstheorie("Alien");

// Wer sind nun die Vorfahren der Menschen
echo "Der Mensch ist ein Nachfahre von ".Mensch::getVorfahre()."<br>";

// Autorin erzeugen (Objekt)
$autorin = new Deutscher("Caroline", "w");

// Die Methode behoerdengang ist über
// das Objekt nicht zu erreichen, da
// diese als private gekennzeichnet ist!
// $autorin->behoerdengang(true);

// Gibt den Ausnahmefall aus, da das
// zweite Argument false ist (throw/catch).
$autorin->umbenennen("Caro", false);

?>

Ausgabe
Matthias
Neuer Name: Matze
Alter des Autors: 1
Matze ist ein Mensch!
Der Mensch ist ein Nachfahre von Affe
Der Mensch ist ein Nachfahre von Alien
Umbennenung fehlgeschlagen!

...und so scheidet Matze dahin
...und so scheidet Caroline dahin



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt