IMPRESSUM dotted_line KONTAKT dotted_line suchen dotted_line Kontakt dotted_line sitemap dotted_line ducken
201 PHP-Resource Mitglieder online

aktuelle Sprache Deutsch Umschalten auf andere Sprache Englisch
ebiz-webhosting
- Werbung-
php-resource

PHP Handbuch

Klassen und Objekte

Kapitel 18. Klassen und Objekte

Klassen

Eine Klasse ist eine Sammlung von Variablen und Funktionen, die mit diesen Variablen arbeiten. Eine Klasse wird folgendermaßen definiert:

<?php
class Cart
{
    var
$items;  // Artikel in unserem Einkaufswagen
   
    // Füge dem Einkaufswagen $num Artikel der Sorte $artnr zu

    
function add_item ($artnr, $num)
    {
        
$this->items[$artnr] += $num;
    }
   
    
// Nimm $num Artikel von $artnr aus dem Einkaufswagen

    
function remove_item ($artnr, $num)
    {
        if (
$this->items[$artnr] > $num) {
            
$this->items[$artnr] -= $num;
            return
true;
        } else {
            return
false;
        }   
    }
}
?>

In diesem Beispiel wird eine Klasse "Cart" definiert. Sie besteht aus einem assoziativen Array von Produkten im Einkaufswagen und zwei Funktionen zum Hinzufügen und Entfernen von Artikeln.

Achtung

Die folgenden warnenden Bemerkungen gelten für PHP 4.

Der Name stdClass ist reserviert, da er intern von Zend benutzt wird. Sie können in PHP keine Klasse mit dem Namen stdClass haben.

Die Funktionsnamen __sleep und __wakeup sind in PHP Klassen "magisch". Sie können in Ihren Klassen keine Funktionen mit diesen Namen haben, außer Sie wollen sie mit dieser "magischen" Funktionalität assoziieren. Mehr Informationen dazu finden Sie weiter unten.

Sämtliche mit __ beginnende Funktionsnamen sind PHP als "magisch" vorbehalten. Es wird empfohlen, in PHP keine Funktionsnamen mit __ zu verwenden, außer Sie möchten dokumentierte "magische" Funktionalität.

Anmerkung: In PHP 4 sind nur konstante Initialisierungen für var Variablen erlaubt. Um Variablen mit nicht konstanten Werten zu initialisieren, benötigen Sie eine Funktion zur Initialisierung, welche beim Erstellen eines Objektes automatisch von der Klasse aufgerufen wird. Eine solche Funktion wird Konstruktor genannt (siehe unten).

<?php
/* Keine wird in PHP 4 funktionieren */
class Cart
{
    var
$todays_date = date("Y-m-d");
    var
$name = $firstname;
    var
$owner = 'Fred ' . 'Jones';
    var
$items = array("VCR", "TV");
}

/* So sollte es gemacht werden */
class Cart
{
    var
$todays_date;
    var
$name;
    var
$owner;
    var
$items;

    function
Cart()
    {
        
$this->todays_date = date("Y-m-d");
        
$this->name = $GLOBALS['firstname'];
        
/* etc. . . */
    
}
}
?>

Klassen sind Typen, das heißt sie sind die Blaupausen für reale Variablen. Um sie zu nutzen, muss zunächst eine Variable mit dem Operator new angelegt werden.

<?php
$cart
= new Cart;
$cart->add_item("10", 1);

$another_cart = new Cart;
$another_cart->add_item("0815", 3);

Dies erstellt die Objekte $cart und $another_cart aus der Klasse Cart. Dann wird die Funktion add_item() des $cart Objektes aufgerufen, um $cart einen Artikel mit der Artikelnummer 10 hinzuzufügen. 3 Artikel mit der Artikelnummer 0815 werden $another_cart hinzugefügt.

Sowohl $cart als auch $another_cart haben die Funktionen add_item(), remove_item() und die Variable items. Dies sind verschiedene Funktionen und Variablen. Sie können sich Objekte ähnlich den Verzeichnissen in einem Dateisystem vorstellen. Sie können in einem Dateisystem zwei verschiedene Dateien README.TXT haben, solange sie sich in verschiedenen Verzeichnissen befinden. So wie Sie in Verzeichnissen den vollen Pfadnamen eingeben müssen, um jede Datei von dem obersten Verzeichnis aus zu erreichen, müssen Sie auch den vollen Namen der aufzurufenden Funktion angeben: Das heißt für PHP, dass das Hauptverzeichnis der globale Namensbereich, und der Separator des Pfadnamens -> wäre. Deshalb benennen die Namen $cart->items und $another_cart->items auch zwei verschiedene Variablen. Beachten Sie, dass die Variable $cart->items, und nicht $cart->$items genannt wird, da ein Variablenname in PHP nur ein einziges Dollarzeichen hat.

// korrekt, einfaches $
$cart->items = array("10" => 1);

// falsch, denn $cart->$items wird zu $cart->""
$cart->$items = array("10" => 1);

// richtig aber fraglich, ob dies erwünscht war:
// $cart->$myvar wird zu $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);

Innerhalb einer Klassendefinition ist nicht bekannt, unter welchem Namen das Objekt in Ihrem Programm erreichbar sein wird: Als die Klasse Cart geschrieben wurde war nicht bekannt, dass das Objekt später $cart oder $another_cart genannt wird. Deshalb können Sie innerhalb der Klasse Cart selbst auch nicht $cart->items schreiben. Um nun die eigenen Funktionen und Variablen innerhalb einer Klasse anzusprechen, können Sie die Pseudo-Variable $this verwenden, welche Sie auch als 'meine eigene' oder 'aktuelles Objekt' verstehen können. Deshalb kann '$this->items[$artnr] += $num' auch als 'addiere $num zu $artnr in meinem eigenen Array items', oder 'addiere $num zu $artnr im Array items innerhalb des aktuellen Objektes' lesen.

Anmerkung: Es gibt ein paar angenehme Funktionen, um mit Klassen und Objekten umzugehen. Mehr darüber erfahren Sie im Kapitel Klassen- und Objekt-Funktionen.



Anmerkungen zum PHP Handbuch
Neue Anmerkung schreiben
 



 

Neuzugänge PHP MySQL Tutorials

plotting masters - a professional guide - Teil I

Grafische Interpolation und Bestapproximation von numerischen Wertepaaren. Mit anderen Worten: Wir wollen Punkte auf einer Zeichenebene über verschiedene Verfahren miteinander verbinden.

04.06.2010 EVAMasters | Kategorie: PHP
plotting masters - a professional guide - Teil II

Grafische Interpolation und Bestapproximation von numerischen Wertepaaren. Mit anderen Worten: Wir wollen Punkte auf einer Zeichenebene über verschiedene Verfahren miteinander verbinden.

02.06.2010 EVAMasters | Kategorie: PHP
Spielereien mit Zeit und Datum

Das Rechnen mit Datum und Zeit ist nur selten unproblematisch, PHP stellt uns dafür zahlreiche Funktionen zur Verfügung. Wir wollen uns im folgenden ein paar davon ansehen und an Beispielen erproben.

09.04.2010 Stephane | Kategorie: PHP
Eines Warenkorbsystem für Anfänger

Ein kurzes Tutorial für Anfänger um ein einfaches aber funktionelles Warenkorbsystem zu erstellen. Freue mich über Rückmeldungen und Kritik - denn nur so verbessert man sich :)

31.12.2009 web3hoster | Kategorie: PHP
SVN Server einrichten

Wie man unter Linux einen Subversion Server einrichtet.

13.05.2009 jens | Kategorie: LINUX
Programmierung - SQL

Dieser SQL-Kurs wendet sich vor allem an Programmierer, die mit Hilfe von SQL auf Datebaken zugreifen, und an alle, die Datenbanken neu entwerfen, erweitern oder abändern wollen

01.04.2009 webmaster205@ | Kategorie: MySQL