Hallo Gemeinde,
ich hätte gern einnen Tipp von Euch erfahrenen PHP-Programmierern. Ich bastle hin und wieder an einem recht umfangreichen Projekt zu UPNP, welches über IP-Symcon (ein Hausautomatisationssystem) realisiert wird.
http://www.ip-symcon.de/forum/thread...PS-new-version
Es sind derzeit zahlreiche einzelne Scripts, ähnlich Modulen, welche teils auch ineinander übergreifen. Dies brauchte ich, um den Überblick zu bewahren und mir ein umprogrammieren und testen zu vereinfachen. Häufig habe ich das auch über einen Include von anderen Scripts mit functions gelöst. Es sind auch eine 3-stellige Zahl an Variablen zu handeln.
Nun bin ich am überarbeiten und habe an manchen stellen functions doppelt definiert und so dachte ich diese in einem weiteren Script zusammenzufassen und die eigentliche Logik nur in den Einzel-Scripts zu belassen.
Ist das Eurer Erfahrung gemäß sinnvoll ?
Stelle ich mir da vielleicht selbst ein Bein, wenn zum Aufrufen einer Function jedesmal ein 3000 Zeilen-Script und ein 1500 Zeilen-Script includiert wird (Performance ...) ?
Ich bin für jeden Hinweis dankbar.
Viele Grüße
André
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sinnvolle Programmstruktur
Einklappen
Neue Werbung 2019
Einklappen
X
-
Sinnvolle Programmstruktur
-
1.) Stell deinen Projektcode doch mal auf Github, damit fällt es anderen auch leichter, etwas zu dem Code zu sagen
2.) Stell überhaupt mal den Quelllcode zur Verfügung. Der Downloadlink im Verlinkten Thread scheint ein Installskript zu enthalten?
Wenn ich die ganzen Funktionen in dem Skript mal überfliege, lese ich sehr oft global. Da die Funktionen irgendwie zusammen zu gehören (darauf deutet ja global hin), bietet sich hier natürlich die Nutzung von Klassen/Objekten an. Ich sehe außerdem viele Variablen die auch in einem gewissen Kontext zueinander zu stehen scheinen - auch die könnte man ja - zwecks besserer Übersicht - in einer Klasse gruppieren/wrappen.
Einen Kommentar schreiben:
-
Welche PHP Version nutzt die Hausautomatisierung denn ? Performance ist schon da der springende Punkt. Code Cache ( auf Bytecode Level ) ist gerade in den Umgebungen sehr sinnvoll.
Einen Kommentar schreiben:
-
Zitat von DigiHouse Beitrag anzeigenDen kompletten Code kann man nur sinnvoll mit dem Hausautomtisationssystem IP -Symcon im Kontext sehen. Das fällt also weg. Aber ein Beispiel kann ich morgen mal online zeigen.
Zu den Fragen im Eingangspost:
- Mehrere Scripts/Dateien sind nicht schlecht, sondern gut. Die Datei sollte eine Verantwortung haben, und nein "beinhaltet alle Funktionen" ist keine.
- (Viele) includes sind kein Problem. Diese sollte aber nicht bei Funktionsaufruf explizit geschehen. Die notwendigen Dateien sollten bei Funktionsaufruf schon geladen sein. Du könntest auch Autoloading verwenden, wie schon vorgeschlagen wurde.
- 3 stellige Anzahl an Variablen ist performancetechnisch kein Problem, wirkt aber seltsam. Sicher das du alle in dem selben Kontext brauchst?
Grundsätzlich dürfte Performance bei dir nicht wirklich eine Rolle spielen. "Standard" PHP-Sachen wie Arrays, Includes oder Variablen werden vermutlich nie Probleme machen, so lange nicht wirklich exzessiv. Problematisch sind eher Dinge wie Dateizugriffe, Datenbankzugriffe, Web-APIs etc.
Einen Kommentar schreiben:
-
Vielen Dank für die Antworten. Den kompletten Code kann man nur sinnvoll mit dem Hausautomtisationssystem IP -Symcon im Kontext sehen. Das fällt also weg. Aber ein Beispiel kann ich morgen mal online zeigen.
Viele Grüße
André
Einen Kommentar schreiben:
-
[QUOTE=DigiHouse;812593]Ist das Eurer Erfahrung gemäß sinnvoll ?[/QUOTE
Nein, das klingt irgendwie nicht sinnvoll, eher abenteuerlich. Es scheint das du die eigentliche Logik deiner Anwendung und Eingabe/Ausgabe "verwurschtelt" hast. Grade bei größeren Projekten wird das problematisch.
Kann man sich den Code irgendwo ansehen ohne irgendwas "installieren" zu müssen?
Zitat von DigiHouse Beitrag anzeigenStelle ich mir da vielleicht selbst ein Bein, wenn zum Aufrufen einer Function jedesmal ein 3000 Zeilen-Script und ein 1500 Zeilen-Script includiert wird (Performance ...) ?
Einen Kommentar schreiben:
-
welches über IP-Symcon (ein Hausautomatisationssystem) realisiert wird
Ev. gibts da auch Tipps die dir helfen können, was ich mich im groben erinnern kann waren die Code-Struktur ein großer Punkt der immer wieder vorkam, und die Suche nach minimalster "Performance"-Optimierungen.
Und Redundanzen sind auf jeden Fall zu vermeiden - siehe D.R.Y. Prinzip.
Ansonsten fällt mir noch ein im OOP Bereich das Autoloading ev. auch Frameworks etc.. aber dazu gibt es viele hier die besseres dazu sagen, gerade was große Applikationen betrifft.
LG
Einen Kommentar schreiben:
-
Also sobald Code doppelt vorkommt ist das schon ziemlich blöd. Das mit der mehrfachen includen kannst du durch include_once verhindern, dann wird der gewünschte Teil nur 1 mal includiert und nicht eventuell 100 mal.
So wie sich das ließt, hört es sich so an als würdest du nicht Objektorientiert Programmieren, was in deinem Fall wohl höchst Sinnvoll wäre, vorallem bei diesem Umfang des Projektes.
Ansonsten könntest du dir mal überlegen eventuell ein Framework zu benutzen.
Soweit von meiner Seite, aber lass da lieber noch mal ein paar Erfahrerene kommentieren, ich bin auch noch "recht neu" (3 Jahre) in Sachen PHP .
Einen Kommentar schreiben:
Einen Kommentar schreiben: