php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.07.2011, 13:02  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Was genau meinst du jetzt mit "Schnittstelle des Inserts"?
Dass z.B. ChildOfExpectedClass ein Interface bedient und damit seine Methoden definiert sind.

Zitat:
Und genau das ist der Fehler. Der Kontext (bzw. die konkrete Klasse) darf keine Rolle spielen.
Wieso nicht? Dann habe ich ja nicht viel von OOP?!

Zitat:
Klar wird es vielleicht wenn man DI nutzt. Die Klasse, in die injiziert wird, erwartet ein BaseClass, hat aber keinen Schimmer ob nun ein ExtendedClass1 oder ExtendedClass2 übergeben wurde.
Das ist schon klar. Anderer Kontext hieße aber DIContainer1 und DIContainer2.
Zitat:
Sie verlässt sich also darauf das in jedem Fall die Methode eine ExpectedClass akzeptiert.
Das wäre ja der Fall, wenn vererbte Interface erlaubt wären. Bzw. erbende Objekte sind ja sogar erlaubt. Darum geht es doch in dieser Diskussion. Schau Dir noch mal die Ausgangsfrage an.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.07.2011, 13:44  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Dass z.B. ChildOfExpectedClass ein Interface bedient und damit seine Methoden definiert sind.
Dann würde man aber doch direkt das Interface als Type Hint verwenden.

Und wenn es doch nicht auf ein gemeinsames Interface ankommt sondern auf eine spezialisierte Klasse von ExpectedClass macht es nur Sinn, die Methode zu überladen oder eine weitere einzuführen und nicht die ursprüngliche Methode zu überschreiben

PHP-Code:
class SpecializedClass extends BaseClass
{
  public function 
doSomethingSpecialized(ChildOfExpectedClass $e) { }

War doSomething() jedoch abstrakt, stellt sich die Frage ob nicht ein Designfehler bei der Vererbung vorliegt.
fab ist offline   Mit Zitat antworten
Alt 12.07.2011, 13:45  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
War doSomething() jedoch abstrakt
Darum gehts ja hier.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 12.07.2011, 13:56  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Dann wurde mit der abstrakten Klasse ein Interface vorgegeben an dass sich die abgeleiteten Klassen nicht halten können. Also weg mit der abstrakten Deklaration, wenn die Methode ohnehin nur kontextabhängig genutzt wird.
fab ist offline   Mit Zitat antworten
Alt 12.07.2011, 16:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Also weg mit der abstrakten Deklaration, wenn die Methode ohnehin nur kontextabhängig genutzt wird.
Das ist es ja gerade. Weder das eine noch das andere muss im Praxisfall zutreffen.

Bsp. grob angelehnt am Ausgangsposting: Ich baue ein Szenario aus Form-Controls und einer View-Komponente. Dann merke ich, es wäre schön, Radio- und Checkboxes als Gruppe behandeln zu können. Also Baue ich bspw. CheckboxGroup als Ableitung von FormControls. Das stellt natürlich andere Anforderungen an die ViewKomponente, darum würde ich gerne die View ableiten und hier als Eingabetyp nur CheckboxGroup zulassen. Geht aber nicht. View würde ich aber auch gerne vererbt lassen, weil
a) viele HTML-bezogene Ausgabeprozeduren grundlegend gleich sind
b) die Viewkomponente ja wiederum woanders eingebunden werden kann. Z.B. in ein FormView-Objekt.

Es mag sein, dass OO das nicht zulässt, allerdings stellt das IMHO durchaus einen typischen Praxisfall dar. Und ich sähe es wirklich nicht problematisch, solange ein TypeHint prüfen würde, ob eine Angabe ein Child der usprünglichen Angabe darstellt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
İnstallation von Propel unter Windows und Ohne PEAR sysr PHP Einsteiger 4 07.02.2011 10:56
Wozu brauche ich eigentlich eine abstrakte Klasse? echo PHP Tipps 2010 28 24.11.2010 17:10
Fehlerbehandlung beim Type Hinting in Kombination mit method chaining nuna PHP Tipps 2010 5 21.05.2010 18:04
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] AF und Type Hinting nikosch Software-Design 4 12.12.2009 14:58
auruf klassen Methode ombolo30 PHP Tipps 2009 11 09.04.2009 15:54
Wireshark SSL Handshake debugging-Handshake protokoll mittels PHP + Curl brian johnson Off-Topic Diskussionen 0 06.11.2008 11:54
Type Hinting - must be an instance of integer, integer given mAy^daY PHP Tipps 2007 1 06.03.2007 14:55
per Methode an Klassen Array Riks PHP Tipps 2007 2 06.01.2007 16:02
Problem mit Wasserzeichen auf Bildern pixelcut PHP-Fortgeschrittene 16 14.12.2004 02:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum