hi
ich benutze äußerst selten Klassen, bringt selten was, außer zeitverlust und die notwedigkeit das objekt hinterher aus dem speciher zu löschen...
bei komplexeren sachen soll es aber schon mal vorkommen
so z.B. jetzt:
ich möchte für eine aufgabestellung mit etlichen methoden und membern unter-objekte erstellen, die die member des eltern-objektes vererbt bekommen. allerdings nicht die des objektes in codeauslieferung sondern nach modifikation on runtime. hmm - so wirds deutlicher -->
nun soll 'value' und anschließend 'value was modified' ausgegeben werden.
zwei möglichkeiten vermisse ich also, bzw. hab nich herausgefunden wies geht.
zunächst das (natürlich optionale) vererben der aktuellen werte des elternobjektes.
weiterhin, (prinzipiell - brauch ich grad aber nicht) natürlich selbiges als referenz statt als initialisierungsprozesses. sprich: kind ist bereits initialisiert, elter->var wird verändert, und somit die referenz elter->kind->var
sinn und zweck der geschichte ist eben das verfeinern gewisser aufgaben:
in elter werden defaults gesetzt, zunächst von der klasse, anschließend aber vom aufrufenden code!
sodann werden kindx und kindy (...) initialisiert und je nach aufgabe werden die werte vom aufrufenden code ein zweites mal angepaßt.
gibt es eine elegante, bestenfalls von php gegebene, lösung hierfür?
schön wäre sowas wie
class kind extends current elter {}
und
class kind extends reference elter {}
die möglichkeit elter zu übergeben oder dessen member via get_object_vars in einer schleife abzuarbeiten und so $this des kinds zu überschreiben halte ich für extrem bescheuert (kann ich mir fast schon extends sparen, wären da nicht noch die methoden), sehe aber grad keine bessere lösung.
tss, schon schlimm, da hat man endlich mal eine aufgabe in der sich oop wirklich als sinnvoll erweisen würde, und dann sowas!
vielleicht zum besseren verständnis noch angehängt dies:
soll 'value' ausgeben
ich benutze äußerst selten Klassen, bringt selten was, außer zeitverlust und die notwedigkeit das objekt hinterher aus dem speciher zu löschen...
bei komplexeren sachen soll es aber schon mal vorkommen
so z.B. jetzt:
ich möchte für eine aufgabestellung mit etlichen methoden und membern unter-objekte erstellen, die die member des eltern-objektes vererbt bekommen. allerdings nicht die des objektes in codeauslieferung sondern nach modifikation on runtime. hmm - so wirds deutlicher -->
PHP-Code:
class elter {
public $var;
function nkind() {
$this->kind = new kind();
}
function show() {
echo $this->var;
}
}
class kind extends elter {
function __construct() {
$this->show();
}
}
$obj = new elter();
$obj->var = 'value';
$obj->nkind();
$obj->kind->var .= ' was modified';
$obj->kind->show();
zwei möglichkeiten vermisse ich also, bzw. hab nich herausgefunden wies geht.
zunächst das (natürlich optionale) vererben der aktuellen werte des elternobjektes.
weiterhin, (prinzipiell - brauch ich grad aber nicht) natürlich selbiges als referenz statt als initialisierungsprozesses. sprich: kind ist bereits initialisiert, elter->var wird verändert, und somit die referenz elter->kind->var
sinn und zweck der geschichte ist eben das verfeinern gewisser aufgaben:
in elter werden defaults gesetzt, zunächst von der klasse, anschließend aber vom aufrufenden code!
sodann werden kindx und kindy (...) initialisiert und je nach aufgabe werden die werte vom aufrufenden code ein zweites mal angepaßt.
gibt es eine elegante, bestenfalls von php gegebene, lösung hierfür?
schön wäre sowas wie
class kind extends current elter {}
und
class kind extends reference elter {}
die möglichkeit elter zu übergeben oder dessen member via get_object_vars in einer schleife abzuarbeiten und so $this des kinds zu überschreiben halte ich für extrem bescheuert (kann ich mir fast schon extends sparen, wären da nicht noch die methoden), sehe aber grad keine bessere lösung.
tss, schon schlimm, da hat man endlich mal eine aufgabe in der sich oop wirklich als sinnvoll erweisen würde, und dann sowas!
vielleicht zum besseren verständnis noch angehängt dies:
PHP-Code:
class cousin extends elter {
function __construct() {
$this->show();
}
}
$obj->cousin = new cousin();
$obj->cousin->show();
Kommentar