Hallo!
der Dateiname nebst Endung spielt bei PHP keine Rolle. Du kannst auch mehrere Klassen in einer einzigen Datei definieren.
Ja, richtig. Ich dachte nur halt von wegen modular programmieren, hab ja nix davon, wenn ich das alles immer wieder in die einzelenn Dateien packe.
Ein API ist nichts weiter als Deine (bzw. des Programmierers) Definition, welche Daten an eine Funktion (oder bei Klassen: Methode) übergeben werden und in welcher Art das Ergebnis zurückgeliefert wird. Sozusagen hat jede Funktion, die ein Argument annimmt und z.B. einen String zurückgibt ein eigenes API.
OK. Denke bei API immer an komplexe Schnittstellen zwischen 2 Programmen!
Ich denke, das ist vielleicht ein bisschen viel auf einmal für Dich, deshalb würde mich eigentlich interessieren, was Du eigentlich konkret "modular" programmieren willst, damit ich mir das besser vorstellen kann, was Du vorhast.
Ja, genau richtig, ist wie schon beschrieben ein sehr abstraktes Thema, und das Problem ist, das ich es eigentlich falsch mache, ich will Klassen verstehen, um zu gucken, wo ich die einsetzen kann, und habe kein echtes Problem wofür ich eine Lösung suche.
Meine Motivation war folgende, und zwar habe ich ja mal einen Online-Shop mit Warenkorb, CMS... geschrieben(alles in PHP), da war ich super-happy als der lief, gedacht so, die Arbeit mußt Du Dir jetzt nicht mehr machen, enfach die Scripte nur noch ändern. Na - denkste! Das war so umständlich geschrieben, dass es schneller gegangen wäre, das kpl. neu zu schreiben. Also hab ich es so gut wie neu gemacht, aber diesmal für immer - wieder falsch! Immer wenn ich einen neuen Shop gemacht habe, kam es mir einfacher vor, einen neuen zu schreiben(vor allem da ich in der Zwischenzeit einiges dazu gelernt hatte!!!) und das jetzt 4 mal hintereinander. Und das kann es ja nicht sein, hab ich mir gedacht. Das muß man doch mal endlich modular hinbekommen, aber leider fand ich so gar keinen Ansatzpunkt hierfür - daher dieser Thread. Dasselbe Problem habe ich auch bei einem anderen projekt, das ich erst anfangen möchte, wenn ich das vernünftig modular machen kann.
Daher war auch gerade das Bsp. mit dem Einkaufswagen eher verwirrend für mich :-)
Ich muß gestehen, trotz Eurer guten uns sehr ausführlichen Antworten bin ich immer noch nicht 100%ig dahinter gestiegen, wie ich das z.B. bei einem Online-Shop einsetzten könnte. Wie das mit den Klassen funktioniert, das weiß ich jetzt, aber ich sehe leider immer noch nicht den Vorteil in meiner Anwendung.
Ich kann ja mal grob(vereinfacht) skizzieren, wie ich das zur Zeit mache:
Ich habe
- eine Startseite, wo ich aus Kategorien auswähle,
- eine Übrsichtsseite, die alle Produkte der ausgewählten Kategorie enthält,
- eine Produktseite, mit Bestellbutton
- eine Warenkorbseite
- und ein Bestellformular.
Erstmal ist jede Seite ein PHP-Datei und so aufgebaut, dass am Anfang erst ein allgemeines PHP-Script eingebunden wird (inclue()), dann der kpl. HTML-Head-bereich und der anfang des Body Bereiches, der überall gleich ist, am Ende noch die entspechenden gleichen HTML-Endbereiche, und die Navigationsleiste. Also 4 PHP Scripte
- global.php
- header.php
- footer.php
- navigation.php
Diese Scripte werden auf jeder Seite eingebunden, so kann ich das schön zentral ändern. Die global.php enthält dann so Sachen wie die Daten zur MySQL Verbindungsaufnahme, alle Funktionen die oft gebraucht werden(z.B. Daten/Preise umrechnen...) auch direkt ein paar SQL-Abfragen die oft gebraucht werden.
Alles übrige schreibe ich in die Dateien selbst, oder binde die noch extra ein.
Das ist jetzt super für den einen Shop, echt bequem, aber beim nächsten mal stehe ich vor dem Problem, dass ich ja nicht unbedingt genau denselben html-Code möchte, da darf ich alle Dateien wieder kpl. ändern, und meist ist da neu wieder einfacher, die include Dateien müssen neu gemacht werden, damit das am Ende wieder so funktoniert, und wenn dann noch die Produkttabelle mehr oder andere Felder braucht kann ich es ja alles vergessen.
Ich weiß das da jedesmal Arbeit nötig werden wird, aber ich habe das Gefühl, dass ich mir extrem viel Arbeit mache, ich jedesmal die Scripte neu schreibe, und nur Teile reinkopiere. Anders verliere ich total den Überblick.
Nun, jetzt weiß ich aber nicht, ob und wie mir hier z.B. Klasen oder überhaupt OOP weiterhelfen könnte! Ich würde es nur mal gerne schaffen, dass ich einfach ein Modul(Datei) nehme, und direkt verwenden kann, ohne dass ich sicher gehen kann, das noch ohne Ende Änderungen nötig sein werden. Oder dass ich die Änderungen(also für einen neuen Shop) irgendwie übersichtlicher durchführen kann, als in jede Datei "reinzufriemeln". Bei mir ist ja auch noch nicht der Code richtig vom Inhalt getrennt. Irgendwie müßte ich den HTML-Teil total unabhängig vom Code schreiben können, was mir bisher nicht gelungen ist.
So, das war jetzt ne ganze Menge, ich hoffe Du verstehst jetzt genauer meine Problematik :)
Grüße
Andreas