home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Objektorientierung mit PHP

Seit PHP 5 beherrscht PHP auch die Objektorientierung. Diese ist dabei recht ähnlich zu der Objektorienteriung in Java oder C++.

Die Vorteile der objektorientierten Programmierung in PHP werden meist erst bei größeren Programmierprojekten sichtbar. 

Es wird empfohlen für jede PHP-Klasse eine eigenen Datei zu erstellen. Dies ist, wie in Java, nicht zwingend erforderlich.

Beispiel für eine Klassendefinition in PHP:

 

class Fahrzeug 

 

 

{
private $geschwindigkeit = 0;

 

 


function beschleunigen($wert) 

 

 

{
$this ->geschwindigkeit += $wert;
}

 

 

 

 

function ausgabe() 

 

 

{
echo "Geschwindigkeit: $this->Geschwindigkeit<br/>";
}
}
  • Die Definition einer Klasse beginn mit class
  • Es gibt wie in Java das Prinzip der Kapselung. Die Geschwindigkeit wird  private gesetzt. Ebenso möglich: protected (sichtbar in eigener und erbenden Klassen) und public (überall sichtbar).
  • Methoden sind Funktionen die innerhalb der Klasse gelten. Definition mit function.
  • Das aktuelle Objekte wird it $this-> angesprochen. Vor dem Namen der Eigenschaft ist kein weiteres Dollar-Zeichen zu finden.
  • Die Funktion "beschleunigen" hat einen Übergabeparameter $wert.


Nun wollen wir das Objekt erzeugen. Dies geschieht mit dem folgende Code:

 

$astonmartin = new Fahrzeug();

 

Dann wollen wir die Funktionen aufrufen, dies machen wir mit diesem Code:

 

$astonmartin->ausgabe();

 

 

$astonmartin->beschleunigen(200);

 

 

$astonmartin->ausgabe();

 

 

Konstruktoren

Wie in Java gibt es auch in PHP einen Konstruktor. Dies wird meist dazu genutzt Variablen zu initialisieren, bzw. Anfangswerte zuzuweisen.


PHP 5.0 verwendet für den Konstruktor den festgelegten Namen:

__construct()

(2 Unterstriche vor construct!)

Beispielcode:

 

public function __construct($geschwindigkeit1){
$this->$geschwindigkeit = $geschwindigkeit1;
}

 

 

Vererbung

In PHP gibt es ebenfalls die Möglichkeit der Vererbung. Dies geschieht ähnlich wie in Java mit dem Schlüsselwort "extends".

Beispielcode:

 

class PKW extends Fahrzeug 

 

 

{
[...]

 

 

}

 

Auf die Vaterklasse wird dabei mit "parent::" zugegriffen.

Möchte man, zum Beispiel, auf eine geerbte Klasse zugreifen so muss man dies mit folgendem Code tun:

 

parent::ausgabe();

 

 


		
			

Abstrakte Klassen

PHP kann ebenfalls abstrakte Klassen definieren.

Diese definiert dabei die Klassen und Methoden welche eine abgeleitete Klasse beinhalten muss. Die Methoden und Variablen enthalten dabei keine Werte oder Methodenrümpfe.


Beispielcode:

 

abstract class Fahrzeug

 

 

{
$geschwindigkeit;

 

 

abstract function ausgabe() {

 

 

}
}

Interfaces

Ebenso sind Interfaces in PHP realisierbar. Interfaces definieren welche Methoden und Variablen eine abgeleitete Klasse beinhalten muss. Dadurch kann eine Klasse durch eine andere Klasse ersetzt werden, die dasselbe Interface implementiert.

Diese Vorgehensweise nennt man auch "Design-By-Contract".

Beispielcode eines Interfaces:

 

interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}

 

Beispielcode einer Klasse die dieses Interface implementiert:

 

class Template implements iTemplate
{
    private $vars = array();
 
    public function setVariable($name, $var)
    {
        [...]
    }
 
    public function getHtml($template)
    {
        [...]
 
        return $template;
    }
}