PHP Verständnisfrage PHP: Variablen und Vorgehen

Dasun

Lieutenant
Registriert
Aug. 2012
Beiträge
846
Guten Abend,

ich beschäftige mich derzeit wegen eines Projekts mit PHP und hätte da die eine oder andere Frage, um mein Verständnis aufzubessern:


Zu meiner Problemstellung:

Ich arbeite derzeit an einer Seite, die auch schon fertig designt ist (HTML/CSS + Javascript & jQuery). Nun geht es darum die Logiken zu implementieren, weswegen ich auf PHP als Sprache zurück greifen möchte. Hauptsächlich habe ich dabei mit div-Elementen gearbeitet um Ordnung auf die Seite zu bringen.

Nun komm ich zum Logik-Teil.

Hierzu habe ich mich die letzten 2 Tage in PHP eingelesen (Kenntnisse in Java, C, C++, Assembler)

So wie ich es verstanden habe, arbeitet man bei PHP am besten mit eingeschobenen Code zwischen den HTML Code <?php ... ?>.

Nun zu meiner Fragen:

- Wie gehe ich am besten mit globalen Variablen um, die ich für alle PHP-Codesegmente auf der Seite brauche. Als Beispiel ist der Inhalt eines Arrays, was in 2 anderen Codesegmenten gebraucht wird.

- Wenn ich bestimmten Code haben möchte, dessen Inhalt sehr bald nach dem erstellen einer Seite durchlaufen werden soll (Bsp. Das einlesen einer XML, dessen Inhalt für eine list benutzt werden sollen). Wo im HTML Code tu ich diesen Code am besten platzieren.

Ich dachte da an direkt nach dem öffnen des Body-Tags, aber aufgrund mangelnder Erfahrung kann ich es nicht wirklich gut einschätzen.


Leider war das Buch, was ich mir hierfür ausgeliehen habe, nicht sehr aufschlussreich.


Ich danke für eure Hilfe,

Gruß Sebastian
 
Ob es dafür eine Regel gibt oder nicht weiß ich nicht. Ich persönlich packe php immer an den Anfang. Dort steht aber auch nicht alles nacheinander sondern die einzelnen Funktionen liegen wiederum in anderen php-Dateien die ich nach Bedarf per include, include_once, require oder require_once in die index.php hole.
 
Seppi_W schrieb:
Hauptsächlich habe ich dabei mit div-Elementen gearbeitet um Ordnung auf die Seite zu bringen.
<div> bringt keine Ordnung. Wenn du Ordnung willst, dann verwendet semantisch korrektes HTML5 mit <header>, <footer>, <article>, <section> und <aside>.

So wie ich es verstanden habe, arbeitet man bei PHP am besten mit eingeschobenen Code zwischen den HTML Code <?php ... ?>.
Falsch. Es ist möglich, manchmal ist es auch unumgänglich. Es ist aber nicht der beste Weg.

- Wie gehe ich am besten mit globalen Variablen um, die ich für alle PHP-Codesegmente auf der Seite brauche. Als Beispiel ist der Inhalt eines Arrays, was in 2 anderen Codesegmenten gebraucht wird.
Wenn es wirklich globale Variablen sind, also welche die du in einer Funktion definierst und in einer anderen manipulierst/abrufst...
Entweder nimmst du das Keyword "global" oder, was etwas sauberer ist, das GLOBAL-Array.

- Wenn ich bestimmten Code haben möchte, dessen Inhalt sehr bald nach dem erstellen einer Seite durchlaufen werden soll (Bsp. Das einlesen einer XML, dessen Inhalt für eine list benutzt werden sollen). Wo im HTML Code tu ich diesen Code am besten platzieren.
Siehe vorherige Antwort. Trenne tiefere Programm-Logik strikt von der Darstellung. Das erleichtert dir später die Erweiterung und Verbesserung des Programms.
Und wenn du schon durchgängig HTML und PHP mischst: Es ist vollkommen egal. Es gibt genau 2 Beschränkungen:
- bevor du per PHP HTTP-Header sendest, darf NICHTS anderes gesendet werden
- was gesagt wurde (echo, print_f, var_dump) wurde gesagt. Daran ändert sich nichts mehr
 
Daaron schrieb:
Wenn es wirklich globale Variablen sind, also welche die du in einer Funktion definierst und in einer anderen manipulierst/abrufst...
Entweder nimmst du das Keyword "global" oder, was etwas sauberer ist, das GLOBAL-Array.
... oder man lernt am Besten nicht gleich schlechten Stil und nutzt keine globalen Variablen. Der Code ist extrem schlecht wartbar, gerade über viele viele Dateien hinweg, die im Programmablauf einfach mal irgendwo eingebunden werden, irgendwas definieren und man sich fragt, wo bspw. irgendeine Variable herkommt und nach fünf Minuten suchen und Trail & Error endlich irgendwas gefunden hat, was am Ende aber wiederum dadurch gar nicht beeinflusst wird (hallo Seiteneffekte). Gibt ja nicht umsonst das Konzept der Kapselung in OOP. So weiß man immer was wann wie woher kommt und kann schnell damit umgehen, ohne groß suchen zu müssen ohne hunderte Programmzeilen zu studieren.

@ TE: Globale Variablen am besten gar nicht. Verwende Kapselung, Singletons, statische Methoden etc. Auf jeden fall so, dass nicht drei Dateien vorher x definiert wird, welche dann irgendwo verwendet wird, währenddessen eine Datei vorher die Variable wiederum von y manipuliert usw. Das ist extrem schlechter Stil. Für den Anfang vielleicht akzeptabel, für wartbaren Code aber extrem schlecht.

Zu Frage zwei: Lies dich bspw. mal ins MVC-Pattern ein. Daten und Anzeige vermischt man optimalerweise nie miteinander (wie Daaron schon schrieb). Das endet wiederum ebenso in unwartbaren Code, wo alles von allem abhängt und man nichts getrennt betrachten kann. Beim Erstellen mag dies einem vielleicht einfach erscheinen, aber später bei der Wartung und Erweiterung fliegt dir alles um die Ohren und du bearbeitest nicht das Problem weiter, sondern nur deinen Code, der anders gestaltet werden muss um Seiteneffektfrei zu sein.
 
Och, so unnütz oder unwartbar finde ich das GLOBALS-Array nicht. Gerade für Übersetzungen/Sprachvariablen ist es ziemlich nützlich. Da legst du irgendwo mehr oder weniger zentral deine Lang-Dateien ab und speicherst die Variablen eben in GLOBALS.
So hats z.B. Contao bis einschließlich 2.11 ausschließlich gehandhabt (und kann unter 3.x ebenfalls noch so benutzt werden). Schaus dir mal an, ist ne recht clevere Lösung
 
Zurück
Oben