phpbar.de logo

Mailinglisten-Archive

[php] Abstrakte Klasse mit abstrakten/nicht abstrakten Attributen?

[php] Abstrakte Klasse mit abstrakten/nicht abstrakten Attributen?

Andreas Lange andreas.lange at haas-media.de
Die Mar 15 16:55:47 CET 2005


Andreas Heigl wrote:
> Wo willst du denn die Variablen setzten? Wenn du die Klasse vererbst rufst
> du den Konstruktor der abstrakten Klasse auf. Darin kannst du ganz normal
> eine Variable 'setzen'

> Wenn du die Funktion foo() in deiner abgeleiteten Klasse neu definieren
> Willst, würde ich dir zu einem Interface raten. Das wird von einer Klasse
> implementiert und die im Interace beschriebenen Funktionen MÜSSEN dann auch
> in der Implementierenden Klasse neu beschrieben werden.

> Ist das vielleicht das, was du suchst?

Prinzipiell ja, die abstract Variante ermöglicht mir allerdings
zusätzlich Vordefinierte Funktionen der Klasse mitzugeben.

Aber selbst das interface ermöglicht mir nicht eine Klasse zu zwingen,
ein Attribut bereistellen zu müssen.

Bsp.:

interface test {
   protected $foo;

   function bar();
}

PHP5: Interfaces may not include member variables ...

Eine Rückkehr zum Getter/Setter Verfahren wollte ich eigentlich
vermeiden. Also entweder selbst drauf achten, das die Variable da ist,
oder über eine Set/Get Methode erzwingen.

Da ich allerdings bequem bin, werde ich wohl selbst drauf achten
müssen ;-)

btw.

Welchen konkreten Anwendungfall gibt es denn, wo man man abstract
statt eines interface nutzen sollte/muss? Ist mein "bequemer"
Ansatz der Weg (sparen von extends + interface) oder gibt es eine im
OOP dafür vorgesehene Aufgabe?

-- 
Andreas Lange


php::bar PHP Wiki   -   Listenarchive