Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

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

 

:: SELFPHP Forum ::

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

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Magische Methoden (Interzeptormethoden): Seite 1

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



Die Interzeptormethoden oder auch magischen Methoden von PHP 5 werden automatisch beim Zugriff auf nicht bekannte Eigenschaften und Methoden eines Objekts, beim Versuch, ein Objekt einer nicht deklarierten Klasse zu erzeugen, sowie bei der Typumwandlung eines Objekts in einen String aufgerufen.
  • __autoload($className) wird aufgerufen, wenn ein Objekt der Klasse $className erzeugt werden soll, die Klasse aber nicht deklariert ist.
  • __call($methodName, $parameters) wird aufgerufen, wenn eine nicht deklarierte Methode $methodName mit einem Objekt aufgerufen wird. Der zweite Parameter $parameters enthält die Parameter des Methodenaufrufs.
  • __get($memberName) wird aufgerufen, wenn lesend auf das Attribut $memberName eines Objekts zugegriffen wird, das Attribut aber nicht gesetzt ist.
  • __set($memberName, $value) wird aufgerufen, wenn schreibend auf das Attribut $memberName eines Objekts zugegriffen wird und das Attribut vorher nicht gesetzt war. Der zweite Parameter $value enthält den Wert, mit dem das Attribut belegt werden soll.
  • __toString() wird aufgerufen, wenn eine Typumwandlung eines Objekts in einen String durchgeführt werden soll.


Einsatz von __autoload()

Die global verfügbare __autoload()-Funktion  kann verwendet werden, um eigentlich nicht definierte  Klassen nachzuladen. Wird auf eine nicht definierte Klasse zugegriffen, wird, falls vorhanden, __autoload() aufgerufen und ausgeführt. Ist __autoload() entsprechend implementiert, können Klassen bequem nachgeladen werden. Damit ist es möglich, Klassen zur Laufzeit erst einzubinden, wenn sie tatsächlich benötigt werden.

Das folgende Beispiel zeigt den einfachsten Fall der Verwendung von __autoload() und geht davon aus, dass alle Klassen in einer Datei deklariert sind, deren Name sich aus dem Namen der Klasse und der Dateiendung .php zusammensetzt.

Beispiel – einfacher Klassenlader mithilfe von _autoload()

<?php

function __autoload($klassenname)
{
  include_once("$klassenname.php");
}
$daten = new Kontakte($host, $nutzer, $passwort);
?>

In diesem Beispiel steht die Klasse Kontakte eigentlich nicht zur Verfügung, da sie weder definiert noch eingebunden ist. Beim Versuch, Kontakte zu instanziieren, wird __autoload() aufgerufen und die Klasse mit include_once() nachgeladen.

Hinweis: Ist die geforderte Klasse nach Ausführung der __autoload()-Funktion weiterhin unbekannt, so wird eine Fehlermeldung ausgegeben.


Einsatz von __call()

Die __call()-Funktion wird aufgerufen, wenn versucht wird, eine nicht deklarierte Methode mit einem Objekt aufzurufen. Mit der __call()-Methode ist es möglich, dem Funktionsaufruf Parameter an die __call()-Funktion zu übergeben. Der __call()-Funktion stehen dabei zwei Parameter zur Verfügung:
  • Im ersten steht der Name der aufrufenden Methode zur Verfügung.
  • Im zweiten Parameter stehen die übergebenen Werte als numerisches Array zur Verfügung.

Hinweis: Die __call()-Methode wird zum Überladen von Methoden verwendet. Klassenmethoden können überladen werden, um eigenen in Ihrer Klasse definierten Code auszuführen, indem man diese speziell benannte Methode definiert.

Beispiel

<?php

class Handies
{
  public $anzahl = 0;
  
  function __call($funktionsname, $parameter)
  {
    $this->anzahl = count($parameter);
    echo "Aufruf von $funktionsname mit $this->anzahl Parameter \n";
    if ($this->anzahl > 0) print_r($parameter);
  }
}

$test = new Handies();
$test->SetzeHersteller("Nokia","Siemens");
$test->SetzePreise(99.95, 199.99, 50);

?>




Objekte – Referenzen und Kopien
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Zend Technologies GmbH weitere Sponsoren
 


:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Zyklische Redundanzprüfung (CRC)

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Bildmanipulation mit PHP & jQuery v2

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de