| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 2.150
![]() | Zitat:
| |
| |
| | |
| Erfahrener Benutzer Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse: Fortgeschritten ![]() | ah stimmt. boah hilfe .. noch voll verpennt ^^ also nochmal, wie ich es machen würde. PHP-Code: |
| |
| | |||||||
| Erfahrener Benutzer | Zitat:
Zitat:
Zitat:
Zitat:
Die Häufigkeit der Aufrufe sagt zunächst einmal nichts aus, ob du eine Klasse schreibst oder normale Funktionen verwendest. Im Gegenteil: Das Nutzen von Funktionen und Klassen hat zwei gemeinsame Hintergründe: a) Übersichtlichkeit b) Wiederverwendbarkeit Die Übersichtlichkeit wird durch Funktionen und auch durch Klassen normalerweise gesteigert. Sogenannter Spagetti- Code, der von oben bis unten stur abgearbeitet wird und aus reinen Anweisungen besteht, ist zum einen unübersichtlich und schwer nachzuvollziehen, zum anderen ist er schwer wartbar. Durch Funktionen oder Klassen werden einzelne Problemstellungen ausgelagert. Durch geschickte Benamung wird erreicht, dass auch verständlich ist, was eine Funktion oder eine Klasse leisten soll. Beispielsweise sollte die Funktion mit dem Namen "pruefeMailAdresse('webmaster@phpfriend.de')" auch tatsächlich die übergebene eMail-Adresse auf Korrektheit prüfen und zurückgeben, wie diese Prüfung ausgefallen ist. Ob du sie nur einmal brauchst oder 20mal sollte nie eine Rolle spielen. Funktionen und Klassen werden aufgrund der Wiederverwendung entwickelt. Sei es in einem Script (4 Stellen, an denen eine eMail-Adresse geprüft werden soll --> eine Funktion, die man 4 mal aufruft) oder sei es aus mehreren Scripten (Gästebuch, Kontaktformular, Login, Passwort-Mailer, Newsletter) oder sei es, weil man in anderen Projekten/ Webseiten nicht alles neu erfinden möchte. Doch wie unterscheiden sich Methoden und Funktionen? Prinzipiell durch zwei Tatsachen: 1. Methoden sind immer an Objekte gekoppelt. Selbst statische Methoden sind rein technisch an ein Objekt gekoppelt! (<< um allen, die sonst wegen den immer oder dem NIE in meinem ersten Satz aufschreien würden, den Wind aus den Segeln zu nehmen). Einer Methode muss man also nicht mitgeben, was sie nun verarbeiten soll, sondern sie weiss es sozusagen. Jede Methode kann nämlich auf die Eigenschaften des zugehörigen Objektes zugreifen. Sie muss nicht erst über Umwege (Funktionsparameter, Globale Variablen oder sonstwas) erfahren, zu welchen Datensätzen sie nun gehört, oder auf welche Eingeschaften sie zugreifen soll. Am konkreten Beispiel: Das Sperren eines Benutzers mittels "sperreBenutzer()". Hier wird eine Methode idealerweise wissen, welchen Benutzer sie sperren muss, weil sie zu einem Objekt der Klasse "Benutzer" gehört, was beispielsweise die Eigenschaft "$userID" kennt. Eine Funktion hat ein Problem: Sie muss irgendwie erfahren, wen sie sperren soll. Im einfachsten Fall ist dies über Funktionsparameter möglich. Im ungünstigsten Fall über irgendwelche Globale Variablen. In jedem Fall wird es schwerer nachzuvollziehen, was eigentlich passiert. OK, das ist ein einfaches Beispiel aber es gibt sehr komplexe Beispiele, wo Funktionen sehr blöde aussehen, wenn man denen alles mitgeben muss. 2. Polymorphie. Klassen zeichnen sich durch eine einfache aber mächtige Tatsache aus: Wenn du eine Methode "sperreBenutzer()" aufrufst, ist bei einer Funktionsfdefinition auch immer genau definiert, welche Funktion du am Ende aufrufst. Bei einer Klasse zunächst nicht. Ein durchgängiges Beispiel: Du hast eine Klasse "Benutzer", die zunächst allgemein beschreibt, was man mit einem Benutzer so alles machen kann. Dann hast du einige Spezialisierungen eines Benutzers. Du hast beispielsweise "Gäste", du hast "NormalerUser", du hast "Moderator" und du hast "Admin". So. Nun könntest du, um beim Beispiel zu bleiben, in jedem der Klasssen eine Methode "sperreBenutzer()" definieren. Bei den Klasse "Gäste" und "NormalerUser" würde sie auch etwas tun, bei den Klassen "Moderator" und "Admin" würde eine Fehlermeldung ausgegeben, dass sich diese nicht sperren lassen. Wenn du dann im eigentlichen Script bist und dort ein Benutzer-Objekt hast, rufst du einfach die Methode "sperreBenutzer()" auf. Du brauchst dich nicht zu kümmern, was das für ein Benutzer ist. Auch die Methoden braucht das nicht zu interessieren, denn PHP wird je nachdem, ob es ein Admin, ein normalerUser oder sonstwas ist, immer die richtige Methode raussuchen und aufrufen. So. Das war jetzt so einfach wie möglich und hoffentlich verständlich. Fazit: Ein OOP- Modell, also die Objektorientierte Entwicklung, bietet einige interessante Aspekte. Zitat:
Zitat:
Auch hast du den Sinn von OOP so nicht ganz verstanden, denn es geht nicht davon aus, einzelne atomare Vorgänge mit aller Macht in eine Klasse zu quetschen. Ein einfaches Gegenbeispiel: Du willst also eine Zahl quadrieren. Wenn du nun nicht weisst, wie, weil du nicht weisst, was für eine Zahl das ist, wie machst du es dann? Mit OOP kannst du dir Klassen definieren, die beispielsweise bei Quadrat, Wurzelziehen etc. jeweils mit unterschiedlicher Genauigkeit arbeiten und auch mit reellen Zahlen arbeiten können. Mit Funktionen hast du ein Problem, weil du jedesmal entscheiden musst, welche Funktion du aufrufen musst, bevor du sie endgültig aufrufst. btw: Klassen sind immer Beschreibungen von Objekten. Eine Klasse ist also die Beschreibung, welche Eigenschaften und Methoden es so gibt, ein Objekt ist eine Instanz von einer bestimmten Klasse mit konkreten Inhalten... | ||||||
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| JS: Einführung - Javascript im Schichtenmodell | nikosch | Tutorials | 4 | 11.04.2009 17:06 |
| aufrufende Klasse und Funktion abfragen?? | galaxyshadow | PHP Tipps 2008 | 4 | 10.06.2008 06:43 |
| funktion innerhalb einer Klasse mit call_user_func aufrufen | phpbeginner | PHP Tipps 2008 | 8 | 22.05.2008 16:20 |
| Variable aus Klasse herausbekommen | GSJLink | PHP Tipps 2008 | 7 | 16.02.2008 22:25 |
| mail - Funktion u. Klasse | Stümper | PHP Tipps 2006 | 7 | 02.03.2006 22:06 |
| Zugriff auf eine Klasse innerhalb einer Funktion -&gt; Fehle | PHP-Fortgeschrittene | 23 | 05.02.2006 13:02 | |
| aus einer funktion auf funktion anderer klasse zugreifen | seejay | PHP Tipps 2006 | 3 | 05.01.2006 10:37 |
| (schnellere) Funktion zum Zusammenfassen von CSS | PHP-Fortgeschrittene | 21 | 08.08.2005 16:47 | |
| Ausgabe Var einer Klasse geht nicht mit externer Funktion | HL1234 | PHP-Fortgeschrittene | 2 | 01.08.2005 19:40 |
| In einer Funktion auf eine Funktion der Klasse zugreifen | phpbeginner | PHP Tipps 2005-2 | 2 | 28.07.2005 00:30 |
| Problem mit einer rekursiven Funktion in einer Klasse | ajo_silent | PHP-Fortgeschrittene | 6 | 13.06.2005 16:40 |
| funktion in klasse ruft funktion in anderer klasse auf | phpfortgeschrittener | PHP Tipps 2005 | 6 | 17.04.2005 17:47 |
| Funktion einer Klasse über Link aufrufen? | MortakArtos | PHP Tipps 2004-2 | 4 | 18.11.2004 12:05 |
| Problem mit optionalen Parametern bei Funktion in Klasse | RudiS | PHP-Fortgeschrittene | 6 | 24.09.2004 09:03 |
| OOP: offizielle php funktion als methode einer klasse ... | PHP Tipps 2004 | 4 | 17.09.2004 04:24 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php zahlen quadrieren, php quadrieren |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.