online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Joshuan vom 25.07.2020, 20:33 Options

[PHP] Modular Programmieren nur mit OOP?

Ich hab viele Skripte. Die meisten machen ungefähr das Gleiche. Immer wenn ich ein neues Skript brauche nehm ich ein altes und schreib es ein bisschen um. Oder ich nehm mehrere alte und mach ein neues draus. Natürlich benutzt ich auch Funktionen aber die sind immer im Skript drin. Ich hab keine Ahnung welche Funktion in welchem Skript ist und vor allem welche Version von der Funktion irgendwo drin ist. Ich hab jahrelang immer nur wild rumkopiert. Es ist das totale Chaos! Deshalb hab ich mir vorgenommen das ich in Zukunft modular programmieren lernen will. Also mit externen Modulen die nicht im Skript sind und die man zentral warten kann. Im Idealfall soll ein Skript nur noch aus Modulaufrufen bestehen. Ok ist natürlich übertrieben.
Jetzt denkt man natürlich bei modular immer gleich an OOP. Ich frag mich aber ob man das braucht oder ob das das richtige für mich ist. Wenn ich mal so Tutorials angelesen hab kams mir immer so vor als wenn der Hauptvorteil ist das man Objekte verallgemeinern kann zu Klassen oder vererben usw. Aber ich wüsste nicht wofür ich das bei mir brauche. Ich lade viel runter. Also eine URL aufrufen, von da aus ein bisschen spidern, Dokumente runterladen, Daten ausschneiden kontrollieren und speichern. Das ist so das was die meisten Skripte machen. Irgendwie hab ich das Gefühl das das immer ein linearer ablauf ist wo man kein OOP für braucht. Ich denk mir man könnte das mit normalen Funktionen machen die man mit include bzw. require einliest. Vielleicht hab ichs aber auch nur nicht richtig verstanden? Keine Ahnung.
Ausserdem haben globale Variablen ja auch Vorteile. Zum Beispiel sollten alle Module ihr Warnungen und Fehler in die Logdatei vom Skript schreiben das den Aufruf macht. Irgendwie widerspricht das doch der Philosophie von OOP wo alles fein säuberlich getrennt sein soll oder?
Ok jetzt hab ich mich mal ausgekotzt. Vielleicht kapiert jemand was ich meine und kann was dazu sagen. Das wär echt cool. Sonst fragt einfach nochmal wenn ihrs nicht kapiert.


Antwort schreiben

Antwort 1 von Marvin42 vom 25.07.2020, 22:36 Options

Hallo,
natürlich kannst du auch PHP modularisieren. Das ist keine spezielle Eigenschaft von objektorientierter Programmierung. Wenn du zwei Funktionen hast und in beiden irgendwo die gleiche Rechnung o.ä. brauchst, dann bietet es sich natürlich an, diese in eine dritte Funktion auszulagern und einfach aufzurufen. Das ist völlig unabhängig von Objekten zu betrachten.

Antwort 2 von Supermax vom 26.07.2020, 09:32 Options

Wenn du nicht sicher bist wofür du OOP brauchst dann brauchst du es auch nicht... mit ein bisschen Erfahrung ergibt es sich beinahe von selbst, wofür sich OOP eignet, und nicht selten stellt PHP dann bereits von sich aus entsprechende Klassen zur Verfügung, etwa für die Behandlung von XML-Daten oder Datenbankverbindungen.

Bei mir hat es sich bewährt, häufig verwendete Funktionen je nach Funktionsbereich in unterschiedlichen Includedateien unterzubringen, z.B. Funktionen zur Textbehandlung in "include/text.php", Funktionen die für die Darstellung zuständig sind in "include/ui.php" usw.

Antwort 3 von Joshuan vom 29.07.2020, 16:20 Options

Ja danke das hat mir schon mal weiter geholfen. Kennt vielleicht noch jemand gute Links zum Thema? Ich denke man muss sich viele Programmierrichtlinien machen damit alles zusammen passt. Ich will nicht alle Anfängerfehler selber machen. Hab aber noch nix gescheites im Web gefunden.

Antwort 4 von Joshuan vom 30.07.2020, 12:31 Options

Sorry aber ich glaub ich hab meine Meinung vielleicht geändert. Vielleicht geht es doch nur mit OOP. Erstens gibt es ja keine SUBs bei PHP, oder? Und das heisst doch wenn ich Funktionen als Module nehme dann kann ich in einem Modul keine lokalen Funktionen mehr haben? Zweitens muss es ja so sein das Module auch andere Module benutzen können. Wenn ich jetzt eine Funktion mit Include reinhole und diese will wieder bei sich eine neue Funktion includen dann geht das doch nicht, oder? Wenn dann müssen alle Funktionen im Hauptprogramm includet werden am besten am Anfang. Ok, es würde gehen aber man müsste so eine Art Packetmanager wie bei Linux schreiben der erstmal alle Abhängigkeiten von den ganzen Modulen löst die in dem Skript vorkommen. Und dann kann erst das Skript laufen.
Aber ich hab das Gefühl das wäre viel zu kompliziert. Oder man includet in jedes Skript alle Module die es gibt. Aber das ist auch irgendwie blöd.
Wenn ich Klassen nehme dann habe ich lokale Funktionen und wenn ich kann auch in einer Klasse eine andere Klasse aufrufen. Und es gibt auch kein Problem wenn zwei Klassen die gleiche dritte Klasse aufrufen. Bei Funktionen darf man sie ja nur einmal für beide includen weil sonst gibt es die Fehlermeldung das es doppelt definiert ist.
Also gibt es da eine Lösung dafür oder ist das so wie ich denke das das nicht richtig funzt?

Antwort 5 von Supermax vom 30.07.2020, 13:11 Options

Egal ob mit OOP oder rein funktionial, eine saubere Trennung der Funktionen in einzelne PHP-Includedateien ist eigentlich immer wichtig.

Mit der Anweisung require_once kannst du in jedem Modul die Untermodule einbinden, deren Funktionen von dem jeweiligen Modul benötigt werden; require_once sorgt dafür, daß ein bereits einmal geladenes Modul nicht erneut geladen wird.

Wenn deine Module nur Funktions- und Konstantendefinitionen enthalten, kannst du generell immer mit require_once arbeiten um zu verhindern, daß dieselbe Datei mehrfach eingebunden wird.

Antwort 6 von Joshuan vom 30.07.2020, 14:12 Options

Ok., vielen Dank. Aber die Hauptsache hab ich jetzt noch nicht kapiert. Kann ich in einem nicht OOP Modul lokale Funktionen oder Unterprogramme haben oder muss ich da sonst Spaghetticode schreiben?

Ähnliche Themen

PHP -> php datei auslesen
Valentin  28.02.2007 - 128 Hits - 7 Antworten

MMOG programmieren
ReBeW  18.03.2007 - 70 Hits - 2 Antworten

Eine Combobox abhängig von einer anderen programmieren
Catze  25.06.2007 - 158 Hits - 6 Antworten

assistentsfeld selbst programmieren
tobias1985  31.07.2007 - 31 Hits - 1 Antwort

PHP Problem - Text aus Datenbank auslesen wo PHP Code drinsteht?!
Kuscheltier  10.11.2007 - 127 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026