Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

OOP – Rundgang




In älteren PHP-Generationen wurden Objekte wie simple Datentypen behandelt, dies hat sich nun geändert. Objekte verweisen nun nicht mehr auf ihren Wert (by value), sondern auf ihr Handle (by reference), ein Handle stellt dabei einen Verweis auf einen Objektbezeichner dar.

Um die Neuerungen aus PHP 5 im Überblick darzustellen, sollten wir uns einem Beispiel zuwenden.

Beispiel

<?php

//--- class ---/
//
// Aufruf zum erstellen einer Klasse!
// Alles, was sich innerhalb der geschweiften
// Klammern des Klassenaufrufs befindet,
// unterliegt der strengen Klassenhierachie
// von PHP 5

class MeineKlasse {

  //
  //--- var ---
  //
  // Die Variablendefinitionen, die innerhalb
  // der Klasse existent sind! Optional können
  // hier Parameter vordefiniert werden!
  // (String,Array,Boolean,Integer)
  //

  var $zeit;
  var $eingabe;
  var $meldung = "Ausgabe beendet!";

  //
  //--- private ---
  //
  // Mit Private definiert man Parameter, die nur
  // innerhalb dieser Klasse aufgerufen werden
  // können und somit NICHT vererbbar sind und von
  // sogenannten Subklassen (Unterklassen) nicht
  // abgerufen werden können!
  //

  private $MathePI;

  //
  //--- __construct ---
  //
  // Diese Funktion wird beim Aufruf der Klasse
  // Automatisch aufgerufen! Dem Konstruktor kann
  // man optionale Parameter  beim Aufruf der Klasse
  // übergegeben. Dieser dient dazu, die Variablen
  // eines Objekts zu initialisieren. Er kann und
  // darf NIE Funktionsergebnis liefern!
  //

  function __construct($eingabe, $zeit) {
    // Nehme den Parameter entgegen und weise ihm die
    // vordefinierten Variable eingabe und zeit zu.
    $this->eingabe = $eingabe;
    $this->zeit = $zeit;
  }

  //
  //--- protected ---
  //
  // Mit protected werden innerhalb der Klasse
  // Funktionen definiert, die nur in der Klasse
  // selbst von anderen Funktionen aufgerufen
  // werden können! Sie sind daher außerhalb
  // der Klasse NICHT ausführbar.
  //
  // Hinweis: print & echo Befehle haben hier
  // nichts zu suchen!
  //

  protected function saved_funk() {
    // Nehme Eigenschaft input und rufe die private
  // Funktion auf!
    return floor(($this->eingabe)*($this->private_funk()));
  }

  //
  //--- public ---
  //
  // Mit public hingegen definiert man eine
  // Funktion, die innerhalb als auch außerhalb
  // der Klasse angesprochen werden darf! Dies
  // gilt übrigens auch für Variablen!
  //

  public function ausgabe_funk() {
      // Rufe die geschützte Funktion auf!
      return $this->saved_funk();
  }

  //
  //--- private ---
  //
  // Der Parameter private ist mit der protected-
  // Funktion vergleichbar, wobei er noch strikter
  // vorgeht. Er verhindert eine Vererbung an
  // weitere Klassen. Privat ist nur in der
  // definierten Superklasse erreichbar und sonst
  // nirgends!
  //

  private function private_funk() {
    // Zuweisung des Werts PI an die Eigenschaft
  // MathePi
    return $this->MathePI = M_PI;
  }

  //
  //--- __destruct ---
  //
  // Ist eine Callback-Funktion, die bei jedem
  // Aufruf der Klasse zurückgegeben wird! Daher
  // auch NICHT Explizit aufgerufen werden muss!
  // Sie ist dann sinnvoll, wenn man einen bestimmten
  // Wert fest zurückgeben möchte! Es werden nur
  // echo- und print-Befehle wiedergegeben!
  //
  // Ausnahme ist hier das Schreiben in Sessions
  // oder Cookies, die zuvor definiert wurden!
  //

  function __destruct() {
    $inhalt  = "Ausgabe " . $this->zeit . "<br>";
    $inhalt .= "Von <b>" . __FUNCTION__ . "</b> aus " . $this;
    $inhalt .= " der Superklasse <b>" . __CLASS__ . "</b><br>";
    $inhalt .= $this->meldung . "<br>";
    echo $inhalt;

  }
}
?>



Nachdem Sie sich mithilfe der Beispielklasse einen Überblick über die Struktur einer Klasse verschafft haben, gehen wir nun dazu über, ein Objekt mithilfe der Klasse zu erzeugen.

<?php

echo "<h3>MeineKlasse</h3>";

$zeitStempel = date("h:i:s ", mktime());

// Objekt erzeugen
$meinObjekt = new MeineKlasse(16, $zeitStempel);

// Ansprechen der public-Funktion
$ausgabe = $meinObjekt->ausgabe_funk();
echo "Ergebnis: " . $ausgabe . "<br>";

?>

Ausgabe
MeineKlasse
Ergebnis: 50
Ausgabe 11:45:14
Von __destruct aus Object id #1 der Superklasse MeineKlasse
Ausgabe beendet!

Des Weiteren ist es möglich, ein Objekt zu klonen und ihm neue Parameter zu übergeben.

<?php

// Klon von meinObjekt
$neuesObjekt = clone $meinObjekt;

// Abruf der Funktion über den Klon
$klonausgabe = $neuesObjekt->ausgabe_funk();
echo "Ergebnis: " . $klonausgabe . "<br>";

?>



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt