Mailinglisten-Archive |
Hannes H. wrote: > Guten Abend, Wissende! > > Ich möchte für eine Gruppe von Klassen vorgeben, dass sie eine > bestimmte Methode implementieren müssen - wozu es zwei Möglichkeiten > gibt: > > a) Interface > b) abstrakte Klasse die abgeleitet wird > > Ich möchte allerdings nur vorgeben, dass die Klassen diese bestimmte > Methode besitzt, allerdings möchte ich nicht die Parameter vorgeben. Wieso willst du das tun? Wenn du ein interface hast, dann hast du den Vorteil, dass du das Verhalten kennst, aber deswegen nicht unbedingt weisst, wie es zu dem Verhalten kommt. So kannst du du die Implementierung ändern ohne den Code zu ändern, der das Interface verwendet. Wenn du von einer Klasse ableitest, hast du den Vorteil, dass du Vorteil, dass du viele Klassen, die von einer Hauptklasse abgeleited sind als eine einfache Klasse verwenden kannst und du nicht für jede Klasse ein if hast. Wenn du die Parameter nicht fest vor gibst, dann gehen dir die Vorteile doch verloren. Wenn du ein Interface hast, weisst du zwar, dass es eine Klasse, die es implementiert die Methode hat, aber du kannst trotzdem noch nicht sagen, wie diese zu verwenden ist. Was hast du davon? > > Gibt es hierfür irgend eine Möglichkeit? Mir fällt leider nichts ein ... Ja, prüf einfach mit method_exists(), ob deine Methode existiert statt mit instanceof. Solange du nur eine Funktion vorgeben willst ändert sich dadurch sowieso nichts. Bei mehreren Funktionen wird es dann was mehr code ;-). In Sprachen ohne automatische Typenkonvertierungen sähe das natürlich anders aus. Da würdest du dann SomeInteface $var =new SomeClass(); $var->call(); In Php hast du den Vorteil nicht. Allerdings hast du in php den Nachteil auch garnicht erst, der den Vorteil nötig macht ;-). Naja... Sonst sag doch erstmal, was du eigentlich vor hast. Ist sonst schwer dir zu helfen ;-). > > Liebe Grüße, > Hannes Halenka Yannik
php::bar PHP Wiki - Listenarchive