phpbar.de logo

Mailinglisten-Archive

[php] $this und className::

[php] $this und className::

Carsten Sierks php_(at)_phpcenter.de
Sun, 5 May 2002 18:36:21 +0200


Hi Mike,
> was ich allerdings nie verstanden habe ist: wieso schreibe ich das zeug in
> eine klasse wenn ich eh nicht vorhabe diese als klasse zu instantiieren?
>
hmm, jetzt geht es tief in die OO (Objekt-Orientierung) rein.

Man unterscheidet zwischen statisch und instanz-orientiert. Statische
Klassen werden (z.B.) unter Java genutzt, um eine Gruppe von ähnlichen
Funktionen zu erstellen, welche keine konkreten Objekte (Instanzen)
modifizieren. Z.B. mathematische Funktionen sind im allg. statisch.
Instanz-Methoden nutzt du, um Instanzen zu modifizieren.

Ein Beispiel: Eine Klasse, die ein 4-Türiges Auto darstellt. Diese Klasse
kennt folgende Eigenschaften:
- die Farbe vom Auto (instanz-abhängig)
- Anzahl der Türen (immer 4, also nicht von der Instanz abhängig, statisch)
- Anzahl der Lenkräder (statisch, 1)
- Menge Benzin im Tank (instanz-abhängig)

Wenn du also eine solche Klasse definierst, brauchst du beim Abfragen der
Anzahl der Türen ja keine Instanz des Wagens vor dir zu haben, denn die ist
ja statisch. Also ginge ein Aufruf nach dem Motto:
4Tuerer::getNumberOfDoors(). Du kannst allerdings auch
Instanz4Tuerer->getNumberOfDoors() machen.
Wenn du den Benzin-Pegel ermitteln willst, brauchst du zwingend eine
Instanz. Also nur die zweite Variante geht.

Dieser Unterschied ist bei PHP nicht fürchterlich wichtig, da man (irgendwer
erwähnte es bereits) rein statische Klassen vermeiden und dies über
Include-Dateien regeln sollte. Bei Java als rein objekt-orientierter
Programmiersprache geht es nicht anders.

Aber "Skripts going OO" ist immer noch ein Thema für sich. ;-)


Carsten


php::bar PHP Wiki   -   Listenarchive