Teil von  SELFPHP   Teil von  Praxisbuch
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* 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 79.000 Beiträgen finden Sie sicher die passende Antwort!  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 



 

Zend Engine 2 und PHP 5




Die Zend Engine 2 stellt ein Versuch dar, PHP5 für den Einsatz im Enterprise-Sektor konkurrenzfähig zu gestalten und einzugliedern. Sicherlich wurde PHP auch schon vorher von Firmen gezielt eingesetzt, aber die Unterstützung in punkto Zuverlässigkeit und Sicherheit, die eine Programmiersprache geben sollte, war keineswegs zufriedenstellend ausgeprägt.

In der folgenden Übersicht befinden sich alle Kernbestandteile der Änderungen an der Zend Engine 2.0. In Zukunft werden wohl noch weitere Features auf Sie als Entwickler zu kommen. Das gesetzte Ziel fokussierte sich primär auf eine verbesserte OO-Unterstützung und die Implementierung neuer Konstrukte, um das OO-Design zu erleichtern.
. Objekte-Klonen
. Objekt-Dereferenzierung
. Konstruktoren & Destruktoren
. Builtin Backtracing
. Verbesserte OO-Verhaltensweise
. Implizite Referenzierung von Objektinstanzen
. Optimierter Objektrückgabemechanismus
. Exception Handling
. Datenkapselung
. Namespaces/Nested Classes

Hier ein Beispiel zu den OOP Erweiterungen, so dass Sie sich ein Bild davon machen können:



<?php

// Schnittstelle
// Gewährleistet die Kommunikation zwischen Klassen
interface Wachstum {
  
// Abstraktion einer Methode
  
abstract public function altern();
}

// Abstraktion einer Klasse
abstract class Lebewesen implements Wachstum {
  
// Eigenschaften schützen, so dass über ein
  // Objekt keine direkter Zugriff möglich ist!
  
protected $alter 0;
  
protected $geschlecht;
  
  
abstract 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
   
function __construct($name$geschlecht) {
     
$this->name $name;
     
$this->geschlecht $geschlecht;
     
$this->altern();
   }
   
   
// Destruktor
   
function __destruct() {
      echo 
"<br>...und so scheidet ".$this->name." dahin";
   }
   
   
// Finale Methoden
   
final function altern() {
     
$this->alter++;
   }
   
   
final function getName() {
     return 
$this->name;
   }
   
   function 
umbenennen($neuerName) {
     
$this->name $neuerName;
   }
   
   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 {
   function 
__construct($name$geschlecht) {
     
parent::__construct($name$geschlecht);
   }
   
   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 erezeugt einen Fehler
// da die Eigenschaft geschützt ist!
// echo $autor->geschlecht;

// An das Alter gelangt man mit Hlfe 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 Caroline dahin
...und so scheidet Matze dahin




 



 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de