Hallo Leute,
so, hab noch eine Frage heute Abend und zwar lese ich gerade ein PHP-OOP-Buch von Matthias Kannengiesser, das Buch ist auf jeden Fall sehr gut und das meiste auch verständlich, ein Thema und zwar die Erstellung von erweiterbaren Modulen, hab ich aber noch nicht ganz verstanden.
Prinzip ist, das man mit Hilfe von OOP natürlich, für bestimmte Arbeiten die erledigt werden müssen ein Modul programmiert, welches die "Verantwortung" hat, diese Arbeit(en) zu erledigen...
Wenn man zu wenige "Erweiterungsmöglichkeiten" einbaut, dann wird das ganze nur für dieses Projekt nutzbar und nicht allgemein nutzbar, baut man hingegen zu viele Erweiterungen ein, wird es überladen und schwerer wartbar...
Laut Kannengiesser ist es also notwendig, ein Modul zu programmieren welches die Anforderungen erfüllt, also die Aufgaben erledigt, nicht zu viele Erweiterungsmöglichkeiten besitzt aber genügend Erweiterungsmöglichkeiten um es für andere Projekte einzusetzen OHNE das man den Quellcode großartig umschreiben muss... ( weil es ansonsten ja für jedes projekt ne eigene "testklasse.php"-Version geben würde und damit wäre die Wartbarkeit hinüber ).
Nehmen wir also mal an, ich will ein DIV ausgeben welches verschiedene Meldungen mit nem Rahmen drumherum anzeigt:
nach Kannengiesser (und auch logisch) wäre die falsche Art und Weise ja so etwas:
PHP-Code:
// wenn ich jetzt z.B. nen orangenen Rahmen haben will, wär ich angeschmiert
// da ich erst etwas am Code ändern müsste
function meldung($string){
print "
<div style='border:1px solid black;'>
$string
</div>
";
}
das wirft mich aber zur Frage, wie macht man es denn vernünftig erweiterbar?
Ich könnte natürlich sagen, das ich zu $string der die Meldung enthält noch Parameter wie $width, $height, $color übergebe, die einen Standardwert besitzen und die ich später dann bei Bedarf überschreiben kann...
ABER
das ist doch auch nicht Sinn und Zweck von erweiterbaren Modulen, oder?
Ich meine, ich kann jetzt ja schlecht jede Eventualität durchgehen, dann hab ich 200 Zeilen Code um nen einfaches Div mit nem Rand anzuzeigen und abgesehen davon, was würde ich wohl tun, wenn ich z.B. zwecks Positionierung noch ein zweites DIV außenrum brauche o.Ä.??
Also, die Problemstellung ist mir klar, ist von Kannengiesser auch schön beschrieben, was mir jedoch noch unklar ist, wie programmiert man jetzt am besten ein Modul, das eine Aufgabe erledigt und trotzdem vernünftig erweiterbar ist? Und wie findet man am besten heraus, was überflüssig ist (als Erweiterung) und was nicht?
ich weiß, keine einfache Frage, aber vielleicht kann ja einer der PHP-Gurus hier ausm Forum mal ausm Nähkästchen plaudern, wie sie bei ihren Projekten solche Probleme lösen??
gruß,
Ascer