Moinsen Leude,
ich bin grad dabei eine Typenbibliothek zu entwerfen um mit PHP auch simple Typen OO abzubilden.
Kleiner Ausflug warum da alles ( konstruierter Anwendungsfall ):
Eine Zahl vom Typ KreisWinkel soll folgende Eigenschaften haben:
* min 0
* max 360
* float
Ich möchte diese Eigenschaften auf der Nutzerseite nicht prüfen müssen, wie ich das machmal bisher tat. Also so:
pc:
ist KreisWinkel > 360 dann werfe Fehler oder setze 360 als maximal. Das Gleiche analog dann auch für 0.
Ich möchte diese Prüfung direkt über den Typ erledigen um Code-Redundanzen zu vermeiden. Also in der Klasse KreisWinkel, sobald der Konstruktor den Wert bekommt.
Um es nochmal kurz zu schreiben. Es geht nicht darum, wie ich Klassen schreibe. Das beherrsche ich sehr gut. Es geht mir hier um den konzeptionellen Aspekt.
Meine Ziele wären, die Typen lose an ein Projekt zu binden, falls das überhaupt denkbar ist.
Derzeit bin ich am Anfang mit des OOD und mir fehlt noch die Erfahrung, welches Vorgehen hier sinnvoll ist.
Meine Gedanken dazu:
Die Klasse des Typs KreisWinkel könnte ohne Instanzierung aufgerufen werden. Mir persönlich erscheint das sinnvoll:
oder Dependency Injection?
Und das Kreis-Objekt nimmt sich das KreisWinkel-Objekt und führt die KreisWinkel-Methode get() intern aus.
Die Methode set_winkel() erwartet dann einfach den Typ KreisWinkel.
Wäre es hier sinnvoll der Klasse KreisWinkel nochmal ein Interface zu verpassen und der Methode set_winkel() einfach das Interface als Typ zu geben statt der Klasse?
ich bin grad dabei eine Typenbibliothek zu entwerfen um mit PHP auch simple Typen OO abzubilden.
Kleiner Ausflug warum da alles ( konstruierter Anwendungsfall ):
Eine Zahl vom Typ KreisWinkel soll folgende Eigenschaften haben:
* min 0
* max 360
* float
Ich möchte diese Eigenschaften auf der Nutzerseite nicht prüfen müssen, wie ich das machmal bisher tat. Also so:
pc:
ist KreisWinkel > 360 dann werfe Fehler oder setze 360 als maximal. Das Gleiche analog dann auch für 0.
Ich möchte diese Prüfung direkt über den Typ erledigen um Code-Redundanzen zu vermeiden. Also in der Klasse KreisWinkel, sobald der Konstruktor den Wert bekommt.
Um es nochmal kurz zu schreiben. Es geht nicht darum, wie ich Klassen schreibe. Das beherrsche ich sehr gut. Es geht mir hier um den konzeptionellen Aspekt.
Meine Ziele wären, die Typen lose an ein Projekt zu binden, falls das überhaupt denkbar ist.
Derzeit bin ich am Anfang mit des OOD und mir fehlt noch die Erfahrung, welches Vorgehen hier sinnvoll ist.
Meine Gedanken dazu:
Die Klasse des Typs KreisWinkel könnte ohne Instanzierung aufgerufen werden. Mir persönlich erscheint das sinnvoll:
PHP-Code:
$kreis -> set_winkel( KreisWinkel::get( 180 ) );
PHP-Code:
$kreis -> set_winkel( new KreisWinkel( 180 ) );
Die Methode set_winkel() erwartet dann einfach den Typ KreisWinkel.
Wäre es hier sinnvoll der Klasse KreisWinkel nochmal ein Interface zu verpassen und der Methode set_winkel() einfach das Interface als Typ zu geben statt der Klasse?
Kommentar