Guten Abend,
ich komme mit Google & Co nicht weiter und bräuchte mal eine private Beratung um den Knoten im Hirn wieder zu lösen.
Für ein aktuelle Projekt möchte ich mich mit der OOP vertraut machen. Ich hab schon einige Bereiche auf Klassen umgestellt, weil ich immer wieder mal vor dem Problem stand, das ich einer Funktion immer weitere Parameter zufügen musste und dafür dann gleich immer den ganzen Source umschreiben musste. Dank OOP kann ich einer Klasse ja einfach eine neue Methode zufügen ohne das ich andere Bereiche im Source dafür ändern muss.
Jetzt versuche ich gerade die Bereiche für das rendern der HTML Elemente zu bereinigen. Dabei möchte ich von Anfang an alles richtig machen und blicke bei der Vererbung nicht ganz durch. Ein Beispiel:
Eine Klasse Table soll für das handling einer HTML Tabelle herhalten. Die darin enthaltenen Elemente wie z.B. <tr> <td> sollen bei Bedarf globale Attribute erhalten (http://www.w3schools.com/tags/ref_st...attributes.asp). Pseudocodemäßig soll es etwa so aussehen:
Pseudocode:
Sieht nett aus, aber... um ganz runter zu den Attributen zu kommen müsste ich ja eine Klasse - nennen wir sie Global_Attributes - erstellen, die neben einem Array für die Attribute auch die Funktionen zum setzen/lesen/löschen dieser Attribute hat.
Diese wird dann an z.B. die Klasse Table_Row oder auch andere Klassen die diese Attribute zulässt (eigentlich fast alles) vererbt
Pseudocode:
Pseudocode wie gesagt.
Jetzt mein Verständnisproblem: Angenommen, ich habe eine Tabelle mit 100 Zeilen, dann bekommt jeder dieser Zeilen (Rows) sein eigenes Attribut Array - das ist ok, da ich dem Array über die in der Klasse vorhandenen Funktionen nur den Wert zuteilen möchte, der auch benötigt wird. eine nackte Zeile hat also nur ein leeres Array - soweit so gut. was aber ist mit den Methoden (Funktionen) die werden ja auch jedes Mal mit vererbt, oder? D.h. bei der Tabelle mit 100 Zeilen habe ich 100 leere Arrays UND 100 mal ein dutzend Funktionen um diese Arrays kontrolliert zu handlen.
Wo ist hier mein Denkfehler und wer könnte mir hier mal einen Schubs in die richtige Richtung geben um solche Programmierfehler/Denkfehler zu vermeiden.
Würde mich wirklich riesig über konstruktives Feedback freuen!
Gruß,
Guido
ich komme mit Google & Co nicht weiter und bräuchte mal eine private Beratung um den Knoten im Hirn wieder zu lösen.
Für ein aktuelle Projekt möchte ich mich mit der OOP vertraut machen. Ich hab schon einige Bereiche auf Klassen umgestellt, weil ich immer wieder mal vor dem Problem stand, das ich einer Funktion immer weitere Parameter zufügen musste und dafür dann gleich immer den ganzen Source umschreiben musste. Dank OOP kann ich einer Klasse ja einfach eine neue Methode zufügen ohne das ich andere Bereiche im Source dafür ändern muss.
Jetzt versuche ich gerade die Bereiche für das rendern der HTML Elemente zu bereinigen. Dabei möchte ich von Anfang an alles richtig machen und blicke bei der Vererbung nicht ganz durch. Ein Beispiel:
Eine Klasse Table soll für das handling einer HTML Tabelle herhalten. Die darin enthaltenen Elemente wie z.B. <tr> <td> sollen bei Bedarf globale Attribute erhalten (http://www.w3schools.com/tags/ref_st...attributes.asp). Pseudocodemäßig soll es etwa so aussehen:
Pseudocode:
PHP-Code:
$table = new Table();
$row = $table->body->addRow();
$row->addClass('clickable-row');
$row->addData('href','http://www.dasinternetabschalten.de');
Diese wird dann an z.B. die Klasse Table_Row oder auch andere Klassen die diese Attribute zulässt (eigentlich fast alles) vererbt
Pseudocode:
PHP-Code:
class Table_Row extends Global_Attributes {
private attributes = array();
public function addClass($name) {
$this->attributes['class'][] = $name;
}
...
}
Jetzt mein Verständnisproblem: Angenommen, ich habe eine Tabelle mit 100 Zeilen, dann bekommt jeder dieser Zeilen (Rows) sein eigenes Attribut Array - das ist ok, da ich dem Array über die in der Klasse vorhandenen Funktionen nur den Wert zuteilen möchte, der auch benötigt wird. eine nackte Zeile hat also nur ein leeres Array - soweit so gut. was aber ist mit den Methoden (Funktionen) die werden ja auch jedes Mal mit vererbt, oder? D.h. bei der Tabelle mit 100 Zeilen habe ich 100 leere Arrays UND 100 mal ein dutzend Funktionen um diese Arrays kontrolliert zu handlen.
Wo ist hier mein Denkfehler und wer könnte mir hier mal einen Schubs in die richtige Richtung geben um solche Programmierfehler/Denkfehler zu vermeiden.
Würde mich wirklich riesig über konstruktives Feedback freuen!
Gruß,
Guido

Kommentar