Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

PHP 5 und Interfaces

Diskussion: PHP 5 und Interfaces im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige heyho ich hab einfach mal ne simple frage, ich versteh in etwa wie das mit den interfaces funktioniert, mein ...

Antwort
Alt 16.10.08, 23:31   #1 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard PHP 5 und Interfaces

Anzeige

heyho

ich hab einfach mal ne simple frage, ich versteh in etwa wie das mit den interfaces funktioniert, mein problem ist vielmehr, wozu braucht man das? mir wird aus dem codebeispiel kein sinvoller hintergrund dafür klar.

bin hier darauf gestoßen:

http://professionelle-softwareentwic...nterfaces.html

__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 16.10.08, 23:55   #2 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard RE: PHP 5 und Interfaces

Zitat:
Original von easteregg
wozu braucht man das? mir wird aus dem codebeispiel kein sinvoller hintergrund dafür klar.
Nun mit dem Interface fasst man sozusagen eine bestimme Gruppe an Objekten zusammen, die bestimmte Methoden zur Verfügung stellen müssen. Hat man nun z.B. eine Liste von Objekten die "Entsaftbar" implementieren, so muss man nicht wissen, welchen genauen Typ diese Objekte nun haben, sondern es reicht zu wissen, dass sie Entsaftbar implementieren, um dann die Methode entsaften aufrufen zu können.
Hätte man die Interfaces nun nicht, hätte man mangels Mehrfachvererbung in diesem Fall keine andere Möglichkeit als den genauen Typ jeden Objekts zu ermitteln, es zu casten und könnte dann erst entsaften aufrufen.
(Ich gehe mal davon aus, dass PHP-Interfaces in etwa den Java-Interfaces gleichen, was mir nach Lektüre des verlinkten Textes auch der Fall zu sein scheint.)
Lesco ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 16.10.08, 23:56   #3 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

Zitat:
Eine Schnittstelle (englisch: interface) ist eine vollständig abstrakte Klasse, die nur Namen und die Signaturen der enthaltenen Methoden vereinbart. Eine Klasse kann eine beliebige Anzahl an Schnittstellen über das Schlüsselwort implements implementieren.
beavisbee ist offline   Mit Zitat antworten
Alt 17.10.08, 00:04   #4 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

aber diese fall tritt ja an sich gar nicht ein, wenn ich nur mit meinen eingenen klassen arbeite?
ist das nicht nur relevant, wenn ich fremdcode verwende?
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 17.10.08, 00:12   #5 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Nicht wirklich.
Hier mal ein (sehr konstruiertes) Beispiel:
Du willst ein Zeichenprogramm schreiben(vergessen wir erstmal, dass es um PHP geht). Dies soll verschiedene geometrische Objekte darstellen können wie Kreise, Polygone, etc.. Alle diese Objekte sollen darstellbar sein, implementieren also eine Methode draw(). Diese Eigenschaft fasst du nun in dem Interface Drawable zusammen. Nun willst du alle angelegten Objekte in einer Liste verwalten. Zur Darstellung willst du diese Liste durchgehen und jeweils draw() aufrufen. Dank Interfaces ginge soetwas:
(Pseudocode: )
Code:
Drawable[] objs = ...;
objs.add(new Circle(...));
objs.add(new Rectangle(...));
objs.add(new Triangle(..));
...
for(i in objs)
    i.draw();
Hättest du nun keine Interfaces ginge dies nicht und du müsstest entweder verschiedene Listen für jeden Typ führen oder jeweils überprüfen, um welchen Typ es sich handelt und dann casten.
Das ist nur ein einfaches Beispiel für die Verwendung von Interfaces, es gibt noch mehr Situationen in denen sowas sinnvoll wird.
Lesco ist offline   Mit Zitat antworten
Alt 17.10.08, 00:15   #6 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

aber genau sowas ähnliches habe ich in php bis dato immer mit der funktion is_callable umgesetzt, einfach vorher geprüft und dann gecasted oder eben nen fehler ausgegeben.
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 17.10.08, 00:18   #7 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Nun, mit Interfaces ist sowas weitaus sauberer und weniger fehleranfällig. Vorallem kann der Compiler somit besser nachvollziehen, ob dein Code in Hinblick auf die Typen gültig ist, und somit werden derartige Prüfungen zur Laufzeit unnötig.
Lesco ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » PHP 5 und Interfaces
Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
programme auf bestimmte interfaces beschränken public Linux/UNIX 5 06.05.09 23:00


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61