Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierstiel: Wie ist es optisch am besten?
BenjaminG
15.10.2005, 09:11:09
ich mach mir gerade gedanken, wie man am besten programmiert.
Soll ich bei einem Ablauf z. B. Loginsystem (Login, Registrieren, Passwort-Anfordern!) alles in eine Datei machen oder in mehrere Verteilt? Das in jeder Datei eine Funktion drin steht, einmal z. B. für das Login und Überprüfen?
oder habt ihr Seiten, wo ich das nachlesen kann?
feuervogel
15.10.2005, 11:19:35
ich weiß zwar nicht, was das mit optik zu tun hat, aber alles aufzuteilen und dann in eine funktion zu schmeißen ist sicher nicht der eleganteste weg.
ich bin mittlerweile auf oop mit php5 umgestiegen, und wenn man nicht einfach nur alles in ne klasse packt sondern auch wirklich objekt-orientiert denkt, wird in meinen augen vieles sehr viel übersichtlicher, strukturierter und wiederverwendbarer.
BenjaminG
15.10.2005, 11:25:37
Mit Klassen habe ich jetzt noch nichts gemacht. Hab bis jetzt immer Funktionen in einer Datei erstellt und diese ausführen lassen.
Aber das mit den Klassen stimmt, wäre mal was anderes.
Muss mal schauen, ob ich dass dann so mache.
xabbuh
15.10.2005, 12:30:52
Eine grundlegende Einführung in die OOP in PHP 4 findest du im Tutorial (http://tut.php-q.net/klassen.html). Alle Änderungen, die dazu in PHP 5 gekommen sind, findest du hier (http://www.php.net/manual/en/language.oop5.php).
Wenn es dir generell um sauberen Programmcode geht, schau dir doch mal diese (http://tut.php-q.net/einruecken.html) und diese (http://pear.php.net/manual/en/standards.php) Seite an.
BenjaminG
15.10.2005, 20:38:48
ist OOP immer sinnvoll?
Ich habe eine Login-Programm, wo der USER eine ID und sein Passwort eingeben muss. Ich benötige die ID dann für die weitere Verarbeitung von Funktionen. Wie kann ich die ID am besten speichern. Bis jetzt ist es mit Session geregelt, oder kann ich überall die Klasse login vererben lassen? Ist denke ich bisschen zu umfangreich, oder?
schreibt mal, wo es sehr sinnvoll wäre?
bzw. bei welchen Sachen man es anwenden könnte?
Also Objektorientierte Programmierung ist unter einschränkungen immer sinnvoll. Die einschränkungen von denen ich hier spreche sind vor allem die Laufgeschwindigkeit. PHP ist bei klassen sehr viel langsamer als bei funktionen.
Nunja eigentlich stimmt das nicht so ganz - denn eine weitere einschränkung ist, dass PHP selbst eingentlich nicht Objektorientiert konzipiert wurde - die sprache enthält kaum objekte die man verwenden kann - das meiste sind funktionen. Wäre alles klassen, wäre es toll zu benutzen, allerdings ist es das nicht, und da es ohnehin schon gemischt ist, kann man es auch gleich gemischt lassen..
Aber zu deiner Frage:
Vererbung ist eine ganz andere sache, als eine session.
Vererbung bedeuted nur, dass du eine klasse erweiterst, allerdings auch noch die ursprüngliche klasse benutzen kannst.
nimm als beispiel die klasse "BilligesAuto" und die klasse "TeuresAuto". Prinzipiell kann das BilligesAuto alles was notwendig ist - Fahren, es hat gurte, man kann hupen, etc.
die Klasse "TeuresAuto" kann ebenfalls alles das - also nimmt sie alles was "BilligesAuto" schon kann von billiges auto (sie erbt es) und kann noch mehr (beispielsweise hat sie ein Navigationsgerät drinnen, ein Autoradio, usw).
Wenn du nun ein TeuresAuto baust, baust du es nach den maßstäben für BilligesAuto und baust dann noch deine verbesserungen ein.
Das bedeuted "Vererbung". Was du dir darunter vorstellst ist, nehme ich an, dass ein objekt wenn es "stirbt" seine daten an ein anderes objekt "weitergibt" - das ist allerdings völlig falsch.
Vererbung verwendest du nur um die funktionalität einer klasse, die bereits existiert, zu erhöhen.
So und um nun zu deiner frage zu kommen, wie OOP dir helfen könnte.
Du könntest beispielsweise eine klasse "User" erstellen, die die SessionID sowie die UserID speichert (und eventuell auch alle Benutzerdetails, seinen Einkaufswagen, etc.)
Die klasse hat methoden um diese dinge zu ändern - du sagst also nur $usr->setPassord($newPW); beispielsweise.
die klasse selbst merkt sich, was verändert wurde und macht ein entsprechendes DB update im Destruktor.
Weiters könntest du beispielsweise zugriffsrechte oder sowas darin speichern - oder du könntest gleich alle benutzerdetails zwischenspeichern - dann musst du sie dir nicht mehr aus der DB holen.
Weiters könntest du eine methode zum erneuten überprüfen der identität des benutzers implementieren (wenn er zum beispiel seinen account löschen möchte, muss er das login nochmals extra machen)
Der vorteil von all dem ist, dass du ein objekt in der Session speichern kannst. Du musst dich also nicht darum kümmern, wo all die informationen über den benutzer hinwandern - das geschieht automatisch! :)
BenjaminG
16.10.2005, 20:58:55
danke für deine ausführliche Anleitung/ Hilfe.
Ich habe gemerkt, dass man nicht alles damit vereinfachen kann.
Ich werde es auf jeden Fall bei einem Punkt anwenden und dies wäre bei einem Ausfüllen eines Formulares, wo mehrere Sachen nacheinander nach Klick auf den Button Weiter ausgefüllt werden. Dann muss ich ja nur immer die Daten in der Klasse bzw. über das Objekt abspeichern lassen und muss es nicht jedes Mal mit übertragen lassen. Wenn der nächste Teil zum Ausführen aufgerufen werden und so kann ich dann auch sehr leicht zurück gehen. Das kann ich dann damit ziemlich vereinfachen.
Aber das mit Login lasse ich glaube ich und mache es mit den Funktionen und der Session. Dazu habe ich jetzt noch eine Frage. Kann ich wenn ich die Klasse USER in der Datei userdaten.php habe und eine Änderung der Zugangsdaten mache in der Datei aenderung_user.php, kann ich dann die Klasse daraus aufrufen auch wenn die userdaten.php in einem unterverzeichnis stehen? Ist sowas überhaupt möglich?
feuervogel
17.10.2005, 01:20:23
ich will zwar nicht hier den klugsch***er raushängen lassen, aber: ihr erkennt/nutzt beide einen vorteil von klassen, programmiert aber nicht wirklich objekt-orientiert.
zu matt: mit php 5.1 soll angeblich oop sehr viel schneller laufen als bisher; konnte es leider noch nicht testen, freue mich aber jetzt schon.
meikel (†)
17.10.2005, 01:40:06
..., aber: ihr erkennt/nutzt beide einen vorteil von klassen, programmiert aber nicht wirklich objekt-orientiert.
Objektorientierung ist weder Selbstzweck noch Religion. Man verwendet OOP genau dann, wenn man zu faul wird, jedes Mal die selben Strukturen zu tippern. Da fängt man an, aus diesen Strukturen universell verwendbare Bausteine zu basteln, die trotzdem noch schnell arbeiten. Genau dann macht OOP auf einem Webserver Sinn.
nunja, ich würde sagen, dass der vorteil von OOP sehr groß ist, gegenüber prozeduralen sprachen. Allerdings unterstützt PHP Objektorientiertes Programmieren nicht wirklich. Alle mitgelieferten funktionalitäten (wie string operationen, datenbankanbindungen, bildmanipulationen, etc.) sind ja auch nicht objektorientiert gemacht. Insofern müsste man sich für alle diese dinge wieder einen eigenen Wrapper schreiben, bevor man dann "richtig" ojektorientiert programmiert.
Handler und callbacks in Klassen zu verwenden ist ja auch nicht umbedingt objektorientiert würde ich mal sagen. Weiters ist PHP ziemlich schwach, was die typen betrifft. Ich kann nicht sagen, "Variable b ist vom typ BlaBla" (zwar funktioniert das seit neuestem in der parameterübergabe, allerdings kann man typen trotzdem nicht erzwingen)
Doch gerade das erzwingen von typen ist es doch auch, was OOP so mächtig macht, und warum man keine pointer, callbacks und handler mehr benötigt - weil man immer weiß, was man bekommt bzw. hat.
Solange PHP nicht diese anforderungen erfüllt, wäre es nicht umbedingt richtig, voll objektorientiert zu programmieren.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.