Hallo und willkommen bei meinem Einsteigerkurs in PHP. Wenn du neu hier bist, mein Name ist Vitali und ich arbeite seit über 10 Jahren als PHP-Entwickler. Da dieser Kurs jetzt ein wenig länger ist, empfehle ich dir, ein Getränk deiner Wahl zu nehmen und ich wünsche dir viel Spaß. Bevor wir aber mit PHP beginnen, müssen wir zunächst mal erfahren, was PHP überhaupt ist. PHP ist eine serverseitige Skriptsprache.
Aber was heißt serverseitig eigentlich? Sagen wir, du öffnest in deinem Browser die Domain Test.de. Slash Impressum.php. Hinter test.de verbirgt sich ja ein Server im Internet. Und die Impressum.php, das ist der eigentliche Skript, der sich auf dem Server befindet.
Also du musst dir das so vorstellen, du hast halt im Internet einen Server gemietet und darauf liegt eine PHP-Datei. Und diese PHP-Datei wird auf dem Server verarbeitet mit einem Interpreter und schickt dir dann zurück eine Antwort. Und deshalb heißt es auch serverseitige Interpretersprache, weil du eben auf deinem Server eine ausführbare Datei hast, die eben diesen PHP-Skript verarbeitet. Wenn der Skript verarbeitet wurde, schickt es natürlich dann eine Antwort zurück vom Server an den Browser. Und diese Antwort besteht aus zwei Teilen.
Zum einen hast du eben einen Header und einen Body. Im Header stehen dann so Metainformationen drin, die der Browser braucht. Dazu gehört zum Beispiel der HTTP-Status-Code oder eben der Content-Type, damit der Browser weiß, was er mit deinem Content anstellen soll.
und dann der Body der in der Regel eben in einer Textform zurückgeschickt wird. Natürlich kannst du neben der Textform auch binäre Dateiformate zurückschicken, aber das wäre ein Thema für ein weiteres Video. Der Body, der zurückgeschickt wird, kann aus mehreren Formaten bestehen.
Du kannst zum Beispiel ein HTML-Format zurückschicken oder ein XML-Format oder eben auch ein JSON-Format. Und weil du ja in dem Header das Format mitgeschickt hast und eben sagst, in welchem Format der Inhalt ist, kann der Browser das dementsprechend darstellen. Du kannst sogar im Body... JavaScript-Code mitschicken und dieser JavaScript-Code wird dann anschließend, nachdem es eben im Browser angekommen ist, ausgeführt.
Und deswegen bezeichnet man auch zum Beispiel JavaScript als clientseitige Sprache, weil der Browser in diesem Fall eben der Client ist, der den Inhalt von einem Server angefragt hat. Neben PHP gibt es natürlich auch noch weitere Skriptsprachen wie zum Beispiel Python oder Node.js oder Go. Aber PHP wird laut W3C am meisten im Web eben benutzt.
So, da du ja jetzt weißt, dass PHP eigentlich auf einem externen Server ausgeführt wird und da eben dieser PHP-Skript verarbeitet wird, musst du ja das gleiche irgendwie bei dir lokal auf dem PC simulieren oder eben nachstellen. Das heißt, du musst bei dir auf deinem lokalen PC irgendeine Software installieren, die eben PHP-Skripte verarbeiten kann. Zum Glück gibt es da eine einfache Möglichkeit und zwar kannst du das Ganze mit XAMPP ausführen.
XAMPP ist ein Paket, der zusammengesetzt wurde aus Apache, PHP, MySQL und Perl. Diese Akronyme sagen dir jetzt vielleicht noch nicht, es ist auch nicht relevant, es ist aber einfacher zu wissen, dass du jetzt hier eigentlich XAMPP herunterladen müsstest und das Ganze auch installieren musst. Den Link zu XAMPP findest du unten in der Videobeschreibung.
Und nachdem du das installiert hast, musst du eventuell dein PC danach... neu starten. Deshalb, wir sehen uns gleich dann weiter im Video. So, ich hoffe die Installation war erfolgreich. XAMPP wird ja per Default oder standardmäßig dir angeboten, dass du das Ganze unter CXAMPP installierst.
Wenn du aber XAMPP unter einem anderen Pfad installiert hast, dann musst du natürlich eben die Pfade für dich eben ummappen sozusagen. Das heißt, wenn ich jetzt von CXAMPP spreche, dann musst du das eben in deinen Pfaden denken. Übrigens, da ich ja in diesem Kurs Linux benutze, wird bei mir das alles ein wenig anders aussehen, aber ich benutze hier auch lokal XAMPP und auch die ganzen anderen Tools werde ich auch hier unter Linux verwenden. Das heißt, letztendlich muss das alles auch bei dir funktionieren, es wird nur alles ein wenig anders aussehen. Aber ich hoffe, das macht nichts.
Die Entwicklung mit PHP sieht in etwa so aus, dass du unter CXAMPP einen htdocs-Ordner liegen hast und dieser htdocs-Ordner bzw. der Inhalt dieses htdocs-Ordners ist über die Browser-Domain Localhost erreichbar. Das heißt, wenn du jetzt zum Beispiel das XAMPP-Kontrollpanel gestartet hast und dort Apache und MySQL hochgefahren hast, dann kannst du die Seite Localhost aufrufen und dann siehst du dann den Inhalt aus dem htdocs-Verzeichnis.
Dieser htdocs-Ordner wird auch als Document-Root bezeichnet. Diese Bezeichnung ist wichtig zu wissen, falls du irgendwann in der Zukunft dir einen Webserver bestellst, wo du dann eben deine PHP Skripte hochladen würdest, dann weißt du was ein Document Root ist, denn in vielen Einstellungen kannst du dann den Document Root auch verändern, dass er auch auf ein anderes Unterverzeichnis zeigt. So, jetzt kennen wir natürlich ein paar grundlegende Begriffe und jetzt können wir auch loslegen und ich habe schon als allererstes eine kleine Aufgabe für dich.
Schau mal in dem htdocs-Ordner einen Unterordner mit dem Namen php und dann schau mal in der Videobeschreibung nach, da ist eine Index-PHP verlinkt, lad dir mal den Inhalt davon runter in den htdocs-Ordner. Anschließend ruf mal in deinem Browser localhost.php auf und schau mal, ob du ein Ergebnis siehst. Und wenn du ein Ergebnis siehst, dann like mein Video und wenn du einen Fehler siehst, dann schreib mir mal in die Kommentare, was da für ein Fehler ist.
Vielleicht kann ich dir ja helfen. Als nächstes hast du in deinem Hatedox-PHP-Ordner eine Index-PHP-Datei und die könntest du ja eigentlich jetzt jederzeit halt editieren mit deinem Texteditor. Allerdings ist der Texteditor nicht besonders gut geeignet, um mit PHP-Dateien zu arbeiten, denn dir fehlen da so einige hilfreiche Tools. Es gibt dazu kostenlose Alternativen, wie zum Beispiel Visual Studio Code. Es gibt natürlich noch viel mehr, aber Visual Studio Code ist so das, was am meistverbreitetsten ist und auch was kostenlos ist.
Deshalb empfehle ich dir als nächstes mal Visual Studio Code herunterzuladen und zu installieren, damit du eben die PHP-Datei damit bearbeiten kannst. Den Link dazu... findest du wie gewohnt unten in der Videobeschreibung. So, jetzt haben wir die gleiche Basis, womit wir starten, also den XM-Webserver sowie Visual Studio Code als Editor.
Und jetzt können wir gemeinsam direkt mit PHP loslegen. Das allererste Thema, worum es hier erstmal geht, ist Grundlegendes. Also prinzipiell ist das ja so, du hast einen HTML-Code und innerhalb des HTML-Codes kannst du PHP-Code platzieren.
Das machst du, indem du einfach ein kleiner Zeichen, Fragezeichen PHP dahinter schreibst und das Ganze wieder abschließt. Dieser Abschluss ist nur dann notwendig, wenn du einen HTML-Code danach ausgeben möchtest. Wenn du keinen HTML-Code später ausgeben willst, wenn danach gar keine Ausgabe stattfindet, dann brauchst du auch diesen Abschluss auch nicht.
Später, wenn du zum Beispiel eine eigene PHP-Datei hast, wo nur reiner PHP-Code drinsteckt, dann kannst du das komplett direkt weglassen. Als nächstes kämen dann die Variablen. Prinzipiell, was ist eine Variable? Vielleicht kennst du das aus der Schule, dass du vielleicht mal so einen Text hast, bei dem du freie Texte eintragen kannst. Also du hast irgendwie einen Text mit ein paar Lücken.
Und diese Lücken musst du mit irgendwelchen Wörtern befüllen. Und diese Lücken, das sind Variablen. Du könntest zum Beispiel jeder einzelne dieser Lücke einen Namen geben und dann einen Wert zu dieser Lücke zuordnen.
sozusagen das gleiche wie eine Variable, aber in Real Life sozusagen. Variablen sind ein sehr wichtiger Bestandteil von fast allen Programmiersprachen, weil das sind Dinge, wo sich Werte in der Variable befinden und mit denen du dann eben dann arbeitest und deine Logiken darauf ausführst. In PHP definieren wir Variablen mit einem Dollarzeichen, dann kommt dann der Name, wie zum Beispiel, ich nenne das mal einen Titel und dann kannst du dieser Variable einen Wert zuordnen mit einem gleicher zeichen und da kannst du zum beispiel hier schreiben startseite in hochkommen das gleiche geht natürlich auch mit einfachen kommen also du kannst entweder doppelte anführungszeichen oder einfacher anführungszeichen verwenden so jetzt hast du der variable titel einen wert zugeordnet und diese variable möchtest du ja eventuell ausgeben die ausgabe geschieht einfach folgendes folgendermaßen du gibst einfach eco title aus und somit hast du das einfach ausgegeben und zwar genau an dieser stelle das heißt wenn dieser code jetzt ausgeführt worden wäre vom interpreter der würde ja den code von oben nach unten abarbeiten und würde hier dann sagen gibt das ganzes mal aus und dann anschließend kommt der ganze html-code aus und das wäre ja an der stelle falsch was du ja eigentlich machen möchte es ist ja irgendwo innerhalb vom html-code diese variable ausgeben und um das zu machen kannst du auch natürlich einfach hier reinschreiben bhp echo title Amen.
Es gibt für diese Schreibweise, für den Echo, auch eine Kurzform. Und zwar sieht diese so aus, dass du einfach hier ein Fragezeichen hinschreibst, ein gleicher Zeichen. Und dann hast du die Variable dann direkt an dieser Stelle ausgegeben.
Und so sieht das ein wenig übersichtlicher aus, wenn du einfach so dann die Variablen später im HTML ausgibst. Übrigens, was ich noch vorher anmerken wollte, ich habe hier oben den PHP-Code ausgegeben. Und das muss man auch in der Regel immer so machen, denn jeder Code wird nach dem sogenannten Eva-Prinzip verarbeitet oder abgearbeitet.
Eva bedeutet Eingabe, Verarbeitung, Ausgabe. Das bedeutet... Ein Skript, in einem Skript definierst du am Anfang immer deine Variablen, mit denen du arbeiten möchtest.
Dann anschließend verarbeitest du diese Variablen und erst zum Schluss gibst du diese aus. Wenn ich jetzt diesen PHP-Skript statt hier oben einfach irgendwo reingeschrieben hätte, hier in dieser Stelle, dann hätte ich nicht mehr das Eva-Prinzip befolgt, sondern hätte hier ein Ausgabe-Eingabe-Verarbeitung-Ausgabe-Prinzip gehabt. Das wäre dann an der Stelle falsch.
Also wichtig ist es zu merken, dein PHP-Code sollte immer vor dem HTML-Code stehen, falls du diese mischt. Später zeige ich dir eh, wie du diesen ganzen HTML-Code auslagern kannst. So, und das war jetzt ein kleiner Nebenexkurs und jetzt hast du ja hier eine Variable. Wir können ja das Ganze mal ausprobieren und schauen, was jetzt denn passiert. Du siehst ja, es hat sich auf der Startseite nicht viel geändert.
Es steht hier oben der Titel Startseite, weil wir das auch eben in die Variable hier eingetragen haben. Du kannst auch hier zum Beispiel Startseiten Titel reinschreiben und dann wird das dann eben auch ausgegeben. PHP ist ja eine schwach typisierte Programmiersprache und das hat den Vorteil, dass du in die Variablen jeden beliebigen Wert reinschreiben kannst.
Du kannst hier einen Titel reinschreiben, du kannst auch hier einfach eine 1 reinschreiben. Das interessiert PHP halt überhaupt nicht. In stark typisierten Programmiersprachen müsstest du Bevor du überhaupt irgendwas in die Variable reinschreibst, vorher definieren, was darf in die Variable überhaupt gespeichert werden. Das musst du in PHP überhaupt nicht tun. Variablen haben auch den Vorteil, dass du die Variablen jederzeit auch überschreiben kannst, also den Wert.
Du kannst hier einmal den Startseitentitel reinschreiben und dann im zweiten Schritt direkt diesen Wert zum Beispiel überschreiben und hier Test reinschreiben. In diesem Fall macht es gar keinen Sinn, aber du hast die Möglichkeit, du kannst wirklich eine Variable eben überschreiben. Neben den Variablen gibt es noch eine weitere Art, die sich ähnlich verhält, aber doch ein bisschen anders, und zwar Konstante. Konstanten sind sowas wie Variablen, du kannst ihnen einen Wert zuweisen, aber sobald du das einmal getan hast, kannst du es nicht mehr verändern.
Deshalb heißt es auch Konstante, es verändert sich nicht. Eine Konstante definieren wir so. Wir schreiben einfach das Schlüsselwort Konst rein und dann kommt ein Name der Konstante aber ohne Dollarzeichen also in diesem Fall wäre das dann Titel und dann weisen wir hier ganz normal auch einen Wert hinzu auch bei der Ausgabe wenn wir die Konstante ausgeben möchten müssen wir hier kein Dollarzeichen benutzen und zwar einfach nur so reinschreiben ich habe auch hier explizit den Konstantennamen groß gewählt weil Man möchte ja schon zwischen einer Konstanten und einer Variable unterscheiden. Und das ist so die übliche Schreibweise in PHP, wie man eben Konstanten schreibt. Also man schreibt sie in der Regel immer in großen Buchstaben.
Und übrigens sieht man ziemlich oft eine Fehlermeldung in PHP, die damit zusammenhängt. Wenn Leute am Anfang direkt irgendwie Variablen ausgeben, vergessen sie oft, einfach mal das Dollarzeichen anzuhängen und dann sehen sie eine Fehlermeldung, die dann besagt, die konstante Titel ist nicht definiert. Und dann fragen die sich, aber wieso konstant? Ich wollte doch gar keine Konstante anlegen. Das ist so ein typischer Anfängerfehler, weil man eben dieses Dollarzeichen in der Variable vergisst.
Deshalb, wenn du jetzt zum Beispiel eine Fehlermeldung siehst, die dann besagt, und die nicht definierte Konstante, und define constant, dann weißt du, dass du da an der Stelle ein Dollarzeichen vergessen hast. Variablen kannst du außerdem zusammenfassen in Listen. Also wenn du zum Beispiel irgendwelche Variablen hast, die irgendwie zusammenhängen, weil die irgendwie logisch miteinander verknüpft sind, weil die zu einer bestimmten Gruppe dazugehören, kannst du die in eine Liste zusammenfassen. Diese Liste mit Variablen bezeichnen wir auch als Arrays. Sagen wir, ich möchte eine Liste erstellen von Links.
Ich habe ja hier unten eine... Eine Navigation und ich habe hier ein paar Links. Ich habe hier Startseite, Kontakt und über mich.
Und ich möchte daraus, sagen wir mal, eine Liste an Links generieren. Das heißt, ich kann hier einzelne Variablen anlegen. Die heißt dann zum Beispiel Home wäre dann die Startseite, Contact wäre dann Kontakt und About wäre dann über mich.
So, und jetzt hast du hier eine Liste an Variablen, aber die sind erstmal einfach nur losgelöst voneinander. Und wenn du die zusammenfassen wollen würdest, dann könntest du die in ein Array übertragen. Und das machst du so. Wir nennen mal dieses Array mal Navigation. und dann kannst du mit eckigen klammern die einzelnen variablen da rein schreiben also wir home contact und erbaut und somit hast du quasi die drei variablen logisch verknüpft in eine einzige variable und mit der kanzlerin weiter arbeiten dazu kommen wir noch später so diese schreibweise hier kannst aber verkürzen denn du musst nicht unbedingt diese variablen vorher anlegen das heißt du könntest auch das hier, statt eine Variable anzulegen, direkt reinschreiben.
Etwa so. Dann sind diese Variablen nicht mehr notwendig und dann hättest du jetzt auch alles in einem Array zusammengefasst. Allerdings kannst du diese Variable jetzt nicht einfach so ausgeben, wie du das eben mit diesem Titel gemacht hast. Das Problem ist ja, du hast hier eine Liste und du willst ja nur einen Text ausgeben.
Das heißt, du musst dich entscheiden. welchen Text du aus der Liste ausgeben möchtest. Und jeder dieser Werte in dieser Liste hat einen Index.
Du kannst dir das Ganze so vorstellen wie, sagen wir mal, du hättest ein Buch vor dir und dein Buch hat ja mehrere Seiten. Dann wäre ein Buch ein Array und jede einzelne Seite wäre dann so ein Element. Und wenn du sagen...
sagen möchtest, du möchtest wissen, was auf Seite 63 steht, dann müsstest du eben im Buch nach der Seite 63 suchen. Und genau das gleiche kannst du auch hier im Array, kannst du das gleiche auch ausführen, nur beginnt hier die Zählung nicht bei 1, sondern bei 0. Also sprich, diese Startseite, die ist jetzt in der Navigation an der Position 0 abgespeichert in der Liste. Der Kontakt ist an Position 1. Und über mich ist dann Position 2. Das heißt, wenn ich jetzt, sagen wir mal, das Wort Kontakt ausgeben möchte aus der Liste, müsste ich das Ganze so hinschreiben, und zwar so. Und das würde halt einfach nur bedeuten, nehme mir diese Liste und hole mir den ersten Element raus.
Und das wäre halt dieser, weil es immer bei 0 beginnt anzuzählen. Jetzt ist das ja so, 0 und 1 und 2. Ist ja schön und gut, aber wenn du jetzt mal die Reihenfolge von diesen Werten vertauscht, ist da plötzlich ein ganz anderer Wert drin. Und das ist halt manchmal nicht so besonders praktisch.
Da gibt es noch andere Möglichkeiten, denn du kannst jede einzelne Seite auch wirklich benennen. Per Default, wenn du gar keinen Namen angegeben hast, dann steht da eben 0, 1, 2 und so weiter drin automatisch. Du kannst denen aber wirklich für jeden Eintrag einen eigenen Namen.
übergeben. Ich zeige dir das mal. Und zwar gibt es dafür eine einfache Syntax.
Am besten ist das ja so, wenn du so eine Liste umbrichst, dann hast du eine bessere Übersicht. Etwa so. Und jetzt kannst du hier einen Namen vergeben und zwar kommt er hier vorne rein und der Name wäre zum Beispiel Start oder nenne ich mal Home und dann kannst du mit einem gleicher größer Zeichen das Ganze so zuordnen.
Das heißt, du hast hier quasi einen Namen übergeben und hier hast du keinen Namen übergeben. Somit hast du jetzt eine Liste, die du entweder mit 1 ansprechen kannst, dann kriegst du hier das über mich oder du würdest hier einfach ein Home reinschreiben und dann würdest du die Startseite daraus kriegen. Das kannst du hier genauso überall auch ausführen und du kannst dann eben über diesen Namen auf diesen Wert zugreifen. Das Ganze nennt sich Assoziative Array, weil du eine Assoziation zu einem Wert hast.
So, und dann gibt es noch eine weitere Art von Variablen, die nicht so oft oder nicht so häufig in PHP zu sehen sind, und zwar Variable-Variablen. Denn in PHP kannst du nämlich aus einem Variablen-Namen eine weitere Variable herauslesen. Ich zeige dir mal, was ich damit genauer meine.
Sagen wir mal, ich erstelle eine Variable, die heißt dann Home. Oder wir machen das anders. Ich nenne die Variable Seite ist gleich Home.
Und dann erstelle ich eine Variable Home, die heißt dann irgendwie wieder Startseite. So, und jetzt kann ich folgendes machen. Und zwar kann ich hier in die Ausgabe mit zwei Dollarzeichen die Seite ausgeben.
Was ist hier an der Stelle passiert? Es ist vielleicht besser lesbar, wenn ich um diese Seite hier eine kleine geschweifte Klammer einbaue. Das heißt im Grunde, dass die Variable Seite, die hat ja den Wert Home.
An diesen Wert wurde hier an der Stelle quasi das Dollar dran gehängt. Dadurch wurde diese Variable zu dieser Variable umgewandelt. Und letztendlich kommt dann am Ende hier Startseite raus.
Ich kann dir das Ganze auch zeigen. Du siehst hier oben steht Startseite. Und das ist halt wirklich daher gekommen, weil...
In Seite drin hier das Wort Home steht. Das kannst du dir einfach nur vorstellen, als ob da jetzt so ein Dollar dran gehängt wurde und das hier dann die eigentliche Variable ist. Eine ganz komplizierte Technik wird, wie gesagt, total selten in PHP benutzt. Das hier ist die kurze Schreibweise. Sieht man ziemlich selten, aber ich wollte mal...
sagen dass es auch so was existiert als nächstes werden dann die vordefinierten super globalen php variablen php bietet dir ja einige variablen mit an mit dem du halt eben arbeiten kannst dazu gehört zum beispiel eine variable die ziemlich oft benutzt wird ist dollar unterstrich gett oder dollar unterstrich post oder dollar unterstrich session dollar unterstrich cookie und dollar unterstrich server Und in einigen Fällen $ unterstich env. Ich werde jetzt nicht auf alle diese Variablen eingehen und die im Detail erklären, sondern einfach nur sagen, es gibt diese und die kannst du auch benutzen. Die zwei wichtigsten sind zum Beispiel get und post für den Anfang.
Die anderen können wir erstmal komplett vergessen. Das werde ich dann später irgendwann noch erklären. Es gibt noch eine dritte, die heißt request. Doch die sollte man nicht benutzen, weil die eine Sicherheitslücke darstellt. Denn die Variable Request, das ist eine Zusammensetzung aus Server, Get und Post.
Und du kannst damit halt einige Werte überschreiben, obwohl du das eben nicht möchtest. Also du kannst mit der Request-Variable, wenn du sie benutzt, ist dein Skript ziemlich offen nach außen, weil du eben Variablen von außen akzeptierst. Denn diese super globalen Variablen, die werden von der Außenwelt befüllt. Ich kann dir das Ganze nämlich zeigen.
Ich gebe mal hier ein var dump ein für die get-Variable. Mit einem var dump können wir jede Variable im Browser einfach so ausgeben, um zu schauen, was denn in dieser Variable drin steckt. Und wenn ich sie aufrufe, siehst du, dass es ein Array ist.
Und Arrays haben wir jetzt gerade kennengelernt, was das ist. Das ist ja eine Zusammensetzung von Variablen. Und du siehst hier, es ist leer. Da ist nichts drin. Die get-Variable, die wird nämlich befüllt über die URL.
Du kannst nämlich zum Beispiel sowas wie index.php.pages.about aufrufen und du siehst hier schon ein Array mit einem Wert. Da drin ist der Name Page drin und da ist ein Wert zu geworden, zwar About. Das heißt wiederum, du könntest, wenn du diesen Wert auslesen möchtest, also About, dann könntest du hier auf die Variable Get zugreifen über das Schlüsselwort Page. oder beziehungsweise über den Namen Page, weil das ist ja das, was hier drin steht. Und diese Variable oben, die kannst du auch noch erweitern.
Du kannst mit einem und, mit einem kaufmännischen und, noch weitere Werte anhängen. Du kannst hier zum Beispiel hinschreiben, Limit gleich 1 und, keine Ahnung, Order ist gleich DSC oder sowas. Und du hast dann hier halt mehrere Werte.
Ich habe jetzt hier nur die Page ausgegeben. Wenn ich das mal wieder entferne, siehst du hier ein komplettes Array mit ganz vielen Variablen. Du kannst auf jeden einzelnen zugreifen. Du kannst dir zum Beispiel diesen Limit auslesen. Da greifst du dann so drauf zu.
So, und die Post-Variable, von der ich gesprochen habe, die wird in der Regel über ein Formular befüllt. Also die Werte in Post kommen dann über ein Formular hinein, aber das werde ich vielleicht auch etwas später erklären. Für den Anfang reicht es, nur das zu wissen.
Und übrigens ist das auch so, diese Get-Variable, du hast sie zwar jetzt kennengelernt, aber eigentlich sollte man die vermeiden, also sollte man diese nicht benutzen. Denn es ist eine, wie davor gesagt, eine super globale Variable. Und die kann auch überschrieben werden.
Das heißt, wenn du ein ganz komplexes Skript hast und du aus Versehen irgendwie einen Wert in dieser Get-Variable überschrieben hast und auf einer anderen Stelle jemand sich auf diesen Wert verlässt, kann es dann zu Fehlern führen. Deshalb sollte man solche globalen Variablen lieber nicht benutzen und stattdessen was anderes benutzen. Das sage ich dir aber auch dann später.
So, jetzt kennst du die verschiedenen Arten von Variablen, wie man diese anlegt und wie man diese eben befüllt. Das nächste wäre die Verarbeitung der Variablen. Es gibt eine Art, wie du die Variablen verarbeiten oder bearbeiten kannst und zwar mit sogenannten Operatoren.
Mit einem Operator wird gemeint, dass du zum Beispiel eine Variable hochzählen kannst oder du kannst eine Variable umberechnen oder du kannst eine Variable zusammensetzen aus anderen Variablen. Und das zeige ich dir mal kurz, wie das geht. und welche Operatoren es so gibt, bzw.
welche die gängigsten sind. Der erste Operator wäre der Inkrement. Also sagen wir mal, du hast eine Zahl, du schreibst hier zum Beispiel eine Zahl ist gleich 1 und ein Inkrement erhöht diese Zahl um 1 und das machst du mit einem doppelten Doppelplus.
Also Zahl plus plus und somit hast du jetzt diese Zahl erhöht. Wenn ich jetzt Echozahl aufrufen würde, würde ich hier eine 2 kriegen. Du kannst das Ganze auch erweitern und sagen, ich möchte mal auf diese 1 10 drauf rechnen. Dann kannst du das eben mit einem Plus gleicher Zeichen machen und dann hier zum Beispiel eine 10 schreiben.
Und somit hast du quasi diese Zahl um 10 erhöht. Das Gleiche geht es natürlich auch mit einem Minus. Du kannst auch ein Minus Minus reinschreiben, das ist dann ein Dekrement.
Natürlich kannst du auch multiplizieren, also das Ganze hier mal, keine Ahnung, mal 2 nehmen oder auch dividieren. Du hast halt diese Möglichkeiten. Das ist aber nur eine Möglichkeit, wie du einen bereits vorhandenen oder einen initialen Wert weiter modifizierst.
Weil wir hatten ja am Anfang die Zahl genommen und dann die eben verändert. Das ist im Grunde eine Kurzform für, wenn du zum Beispiel ein Ergebnis definieren würdest, also eine neue Variable, wäre dann Zahl. mal 2 und die Kurzform davon ist halt eben Zahl mal gleich mal gleich 2. Weitere Operatoren, die wichtig sind, ist größer und kleiner Zeichen.
Du kannst zum Beispiel zwei Zahlen miteinander vergleichen. Du kannst zum Beispiel eine Zahl 1 hinschreiben, die ist dann 10 und dann Zahl 2 hinschreiben, die wäre dann 20 und dann kannst du Im dritten, im Ergebnis, überprüfen, welche Zahl denn jetzt größer ist. Du würdest hier aber nicht als Antwort zurückkriegen, welche Zahl größer ist, sondern würdest hier abfragen, ist Zahl 1 größer als Zahl 2, ja oder nein.
Das heißt, du würdest hier im Ergebnis entweder ein True oder False kriegen, je nachdem, welche Werte sich in dieser Zahl befinden. Neben größer gibt es natürlich auch nur kleiner Zeichen und kleiner gleich und größer gleich. Du willst ja wissen, ob die Zahl größer ist als Zahl 2 oder auch gleich groß ist. Da würde es dir auch ein True zurückgeben.
Also sprich, wenn ich hier zum Beispiel eine 20 eintrage, würde ich hier ein True kriegen, weil Zahl 1 ist genauso groß wie Zahl 2. Und so würde ich dann ein False kriegen, weil Zahl 1 ist nicht größer, weil es genau gleich groß ist. Weitere Operatoren, die du oft sehen wirst, ist sogenanntes Und-Verknüpfen. Also du kannst zum Beispiel abfragen, sagen wir mal, ist die Zahl 1 größer als 10 und kleiner als 20, dann gib mir ein true aus. Du kannst also mehrere Abfragen erstellen und diese dann miteinander verknüpfen mit einem und. Und nur wenn diese beiden Werte zutreffen, also wenn diese beiden true sind, dann wird das Gesamtergebnis auch true sein.
Neben UND gibt es auch natürlich eine ODER-Verknüpfung. Damit kannst du sagen, ist entweder diese Zahl größer oder diese Zahl kleiner. Eins von beiden reicht schon aus, damit im Ergebnis dann ein TRUE drin steht.
Und mit diesen Operatoren kannst du schon deine ersten Kontrollstrukturen verwenden. Was sind Kontrollstrukturen? Dein Quellcode wird ja von oben nach unten abgearbeitet.
Und mit einer Kontrollstruktur kannst du bestimmen, dass es nicht eben das passiert. Denn du kannst zum Beispiel sagen, führe mal irgendeine Logik mehrfach aus. Oder führe in diesem einen Fall mal den einen Weg aus und in einem anderen Fall einen anderen Weg.
Und das kannst du alles beeinflussen mit einer Kontrollstruktur. Und die sind halt auch wichtig, die kommen halt sehr oft in einem Quellcode auch vor und darauf ist auch die komplette Logik sozusagen aufgebaut. Die allererste Kontrollstruktur, die eigentlich jeder kennt, ist ein IF.
Das wird so geschrieben, ein IF, Klammer auf, geschweifte Klammer auf und geschweifte Klammer zu. In diese Klammern kommt dann die Bedienung, also wenn irgendwas zutrifft. Also kannst du hier abfragen, wenn die Zahl 1 größer 10 ist, dann mach irgendwas.
Schreibe zum Beispiel hin, Zahl 1 ist größer 10. Zu einem IF gehört manchmal auch ein ELSE dazu. Du kannst hier hinten einfach ein ELSE reinschreiben und dann hinschreiben, Zahl 1 ist kleiner 10. Du kannst auch mehrere Bedienungen hintereinander ausführen mit einem ELSE IF. Du kannst hier hinten einfach ein ELSE IF reinschreiben, eine weitere Abfrage. Da fragst du zum Beispiel ab, Zahl 1 ist größer 20. Und dann gibst du hier eine weitere Ausgabe aus und schreibst Zahl 1 ist größer 20. Also du kannst mit einem if, else if und else das Ganze kombinieren.
Und diese else ifs, die kannst du halt unendlich anhängen. Du kannst so viele anhängen, wie viel du willst. Es macht aber manchmal nicht so viel Sinn, ganz viele else ifs einzubauen. Und irgendwann wird es vielleicht auch unübersichtlich.
Und da gibt es dann eine alternative Schreibweise und zwar ein sogenannter Switch Case. Denn bei so einem Else-If, der sich immer wieder wiederholt, willst du eigentlich, dass deine Logik sich aufteilt in mehrere logischen Branches sozusagen. Du gehst am Anfang in dein Quellcode hinein, verarbeitest das Ganze und dann teilst du eben deine Logik auf und je nachdem, was in der Zahl drinsteht, soll was anderes ja passieren. Und das regeln wir in der Regel mit einem Switch Case.
So wird ein Switch definiert. Wir schreiben das Schlüsselwort Switch rein und dann und in diese Klammer kommt dann dieser Wert hinein, mit dem der Switch eben arbeiten soll. In diesem Fall wäre es, sagen wir mal, Zahl 1. So, als nächstes käme dann der Fall oder die Abfrage, was passieren soll, sobald die Zahl zum Beispiel irgendeinen Wert erreicht hat. Das kannst du zum Beispiel hinschreiben, indem du hinschreibst Case in Klammern dann Zahl 1 größer 10 und dann anschließend ein Break. Und dann kannst du hier dann ausgeben, echo Zahl 1 ist größer 10. Also wie bei unserem vorherigen if-else halt auch.
Und für den else-File gibt es ein default-Case. Das ist quasi, wenn nichts zutrifft, wird dann dieser Case ausgeführt und dann wird dann angegeben, keine Ahnung, echo Zahl ist klein. Das ist quasi der else-File aus dem if-else-Statement. Switch Case hat einen kleinen Vorteil gegenüber If-Else-Statements und zwar ist das so, du kannst nämlich diesen Break herausnehmen und der Switch Case verläuft dann alle Werte hintereinander ab.
Also in manchen Fällen braucht man das. Also sagen wir mal, du hast hier ein Case, da sagst du Zahl 1 größer 10, Zahl 1 größer 20 und größer 30. Und solange ich diese Breaks hier rausgebe, und hier in Zahl 1 eben die 20 reinschreibe, wird dann dieser Switch Case erstmal das ausgeben, dann hier das nächste, ich muss mal hier die Zahl auch natürlich noch reinschreiben, und hier würde dann herausbrechen sozusagen aus diesem Case und dann eben zwei Ausgaben erzeugen. Das könntest du bei dem If-Else-Statement gar nicht machen.
Beim If-Else-Statement könntest du nur einen einzigen Bereich ausführen, während du hier halt mehrere hintereinander ausführen kannst, solange die Bedienung nicht erreicht ist. Das ist halt ein kleiner Vorteil. Neben Switch Case gibt es noch eine weitere Art und Weise, wie du solche Logiken ausführen kannst, und zwar mit einem Match Statement. Den erkläre ich dir aber dann später, wenn wir zu den Funktionen kommen, weil da muss man schon vorher wissen, was Funktionen sind.
So, neben diesen If- und Switch Cases gibt es noch Schleifen in PHP. Eine Schleife brauchst du, wenn du Dinge mehrfach hintereinander ausführen willst x-mal und es gibt mehrere Arten von Schleifen es gibt sogenannte Fuß gesteuerten Schleifen und Kopf gesteuerten Schleifen eine Kopf gesteuerte Schleife bedeutet dass Wenn der Code von oben nach unten abgearbeitet wird und bis zu der Schleife ankommt, dann wird in der Schleife erstmal geprüft, darf diese Schleife ausgeführt werden und wenn es zutrifft, dann wird die Schleife ausgeführt, ansonsten wird sie übersprungen und einfach wird der Code weiterverarbeitet. Eine fußgesteuerte Schleife ist genau andersherum. Dein Quellcode wird von oben nach unten abgearbeitet und es geht auf jeden Fall in diese Schleife mindestens einmal rein. Nachdem es dann einmal durchgelaufen ist, wird dann überprüft, stimmt denn die Bedienung immer noch und wenn nein, dann fliegst du aus der Schleife raus, ansonsten bleibst du da so lange drin, bis du eben das Ende erreicht hast.
Es gibt mehrere Fuß- und Kopfgesteuerten Schleifen und ich fange mal mit den Kopfgesteuerten Schleifen an, weil die am häufigsten benutzt werden in PHP. Eine Vorschleife wird so aufgebaut, du schreibst das Schlüsselwort vorhin, dann Klammern und dann geschweifte Klammern. Weil das hier...
kommt dann deine Logik rein, was innerhalb der Schleife passieren soll. So, und hier bestimmst du, wie oft diese Schleife durchlaufen soll. Du definierst einen Startpunkt, also wo beginnt die Schleife, bei welchem Wert.
Meistens ist das 0, also du kannst zum Beispiel sagen, Zahl ist gleich 0. Dann setzt du ein Semikolon und sagst, wie lange soll denn diese Schleife durchlaufen. Dann kannst du angeben, Zahl so lange, bis die Zahl kleiner 10 ist. So, und dann anschließend musst du sagen, was soll mit der Zahl passieren in jedem Durchlauf.
Dann setzt du wieder ein Semikolon und sagst, du erhöhst die Zahl um 1 mit unserem Inkrement. Und wenn du aufgepasst hast, kannst du ja auch hier andere Operatoren schreiben. Du könntest hier zum Beispiel hinschreiben, plus gleich 10. Dann wäre die Schleife nach einem Mal schon komplett durchgelaufen, weil sie schon sofort 10 erreicht hätte. Oder du könntest hier schreiben, mal gleich 2. Dann würde die Zahl sich immer um 2 multiplizieren, bis sie dann die 10 erreicht hat und so weiter. Im einfachen Beispiel schreibe ich jetzt einfach hier plus plus.
Das bedeutet wiederum, du hast hier also eine Schleife, die beginnt bei 0 anzuzählen. Bei 9 hört sie auf und springt der Code aus der Schleife heraus. und solange du dich Solange die Zahl kleiner 10 ist, kannst du hier machen, was immer du willst. Du kannst hier zum Beispiel echo und dann die Zahl ausgeben und zwar einfach so mit einem Breakpoint dazwischen, dass du halt hintereinander oder untereinander die Zahlen ausgibst. So und der nächste Operator, den ich auch vergessen habe, ist, du kannst hier Texte zusammensetzen und zwar mit einem Punkt.
Und so hast du quasi einen Text genommen, eine Variable genommen und an diese Variable nochmal einen Text. angehängt und hast sozusagen aus drei Bausteinen einen einzigen Text zusammengefasst und diesen dann direkt ausgegeben. Mit Punkt kannst du Texte zusammensetzen.
Wenn du das jetzt ausführen würdest, würdest du hintereinander einfach mal neun Zahlen sehen. Ich kann das ja mal zeigen. Hier siehst du das Ergebnis.
Zahl 0, 1, 2, 3 und das Ganze geht bis 9. Das hier ist die Ausgabe von meinem Gitter hier oben, den lösche ich mal hier raus. So, das ist eine kopfgesteuerte Schleife. Du bist am Anfang reingegangen und es wurde geschaut, okay, die Zahl ist 0 am Anfang und die ist kleiner 10, also darfst du in die Schleife hinein. Wenn ich zum Beispiel gesagt hätte, dass die Zahl 10 ist, dann würde man gar nicht von Anfang an in diese Schleife reinkommen und die würde nicht ein einziges Mal ausgeführt werden.
Du siehst hier, die Ausgabe ist leer. Die Schleife wurde direkt übersprungen, weil von Anfang an die Bedienung nicht stimmte. Das gleiche kannst du zum Beispiel mit einer anderen Schleife definieren, und zwar einer While-Schleife. Die ist auch kopfgesteuert und die schreibt sich so. Du kannst nämlich hier ein While hinschreiben und in dieser While-Schleife kannst du direkt die Bedienung reinschreiben.
Also schreibst du hin, Zahl kleiner 10 und den Inkrement. den müsstest du innerhalb von while dann eben setzen. Hier setzt du dann Zahl++.
Und den initialen Wert musst du außerhalb der Schleife setzen, und zwar hier einfach Zahl ist gleich 0. Und das hier und das hier ist im Grunde das Gleiche. Ich kann nämlich genauso auch hier diesen Wert oder den Text eben auch ausgeben. Und hier siehst du dann diese Ausgabe von dieser while-Schleife. Und auch hier gilt, also es... Es wird am Anfang erstmal geschaut, darfst du überhaupt erstmal rein.
Wie gesagt, Kopfgesteuerte Schleife. Es gibt Fälle, dass du einzelne Schritte in deiner Schleife überspringst. Dafür gibt es das Schlüsselwort Continue.
Sagen wir, du möchtest diese Zahl in der Schleife Solange oder erst ab einem gewissen Zeitpunkt ausgeben. Sagen wir, wenn die Zahlgröße 5 ist, dann wollen wir mal die Zahlen ausgeben, aber davor interessieren die uns nicht, aber wir wollen trotzdem dann den Wert hochzählen. Damit kannst du eine kleine Abfrage machen.
Du kannst einfach abfragen, wenn die Zahl kleiner 5 ist, dann erhöhe die Zahl um 1 und überspringe das Ganze. Das heißt, alles was danach kommt, wird nicht mehr ausgeführt, was nach dem Continue kommt. Das heißt wiederum, wenn wir in...
die Situation kommt, dass die Zahl größer als 5 ist, dann kommen wir gar nicht in das If-Statement hinein. Das heißt, dieses Continue wird nie ausgeführt und nur das hier wird ausgegeben. Und am Ende sehen wir eben nur Zahlen größer 5. Und hier sieht dann das Ergebnis aus.
Du hast dann die Zahlen von 5 bis 9. Also mit einem Continue kannst du einzelne Schritte in einer Schleife überspringen. Und dann gibt es noch alternativ zu Continue ein Break. gehst du komplett aus der Schleife raus. Das heißt, das wird einmal ausgeführt und dann fliegst du raus und es ist egal, ob die Schleife zu Ende gelaufen ist oder eben nicht.
Das heißt, in diesem Fall würden wir nur eine einzige Ausgabe sehen, weil am Anfang eben die Zahl kleiner 5 ist und dann würden wir sofort rausfliegen. Ich kann das ja mal hier so einbauen. Und du siehst hier einfach nur Zahl 0. Zahl 0 ist kleiner als 5. Wir haben das um 1 hochgezählt und mit einem Break sind wir komplett rausgeflogen. Da du ja Schleifen ineinander verschachteln kannst, du hast ja hier einmal diese While und du kannst ja in der While nochmal eine Vorschleife einbauen, hast du die Möglichkeit, bei einem Break oder bei einem Continue hinten noch die Zahl anzugeben, um anzuzeigen, wie viele Schleifen du rausfliegen möchtest.
In diesem Beispiel hier, sagen wir mal, ich würde diesen If-Statement in die Vorschleife eintragen. Also wir befinden uns hier immer noch in dieser Vorschleife drin. Und mit diesem Break 2 würde ich sagen, du springst einmal aus dieser Schleife heraus und dann noch aus dieser Schleife. Wenn ich hier einfach nur einen Break angegeben hätte, ohne der 2, dann würde er nur aus dieser Schleife rausspringen, aber hier dennoch weiter zählen außenrum.
Und das gleiche eben auch mit Continue. Bei Continue kannst du auch hinten einfach eine 2 oder 3, je nachdem wie viele Schleifen drin sind, angeben. Aber... Man sollte das eigentlich vermeiden, dass man viele Schleifen ineinander verschachtelt hat. Und besonders sowas hier mit verschiedenen Arten von Schleifen sollte man eigentlich vermeiden.
Aber es gibt halt die Möglichkeit, dann komplett aus dem ganzen Schleifenkonstrukt rauszuspringen. Die nächste kopfgesteuerte Schleife in PHP ist die sogenannte For-Each-Schleife. Die schreibst du so auf, also einfach For-Each-Klammer auf und erstmal wieder geschweifte Klammern. Das ist bei jeder Schleife gleich. Aber das, was in forEach reinkommt, muss immer ein Array sein.
Also in diesem Fall können wir hier zum Beispiel die Navigation übergeben. Und für jeden einzelnen Wert wollen wir eine neue Variable erzeugen und mit der arbeiten. Das heißt, du definierst hier noch das Schlüsselwort s und schreibst dann zum Beispiel Text. Und somit hast du in der Variable Text, also wenn ich hier zum Beispiel Echo Text ausgebe, Wird hintereinander erstmal Startseite ausgegeben, dann über mich und dann Kontakt.
Wenn du auf diese einzelnen Schlüsselwörter, wenn du die auch noch in deiner Schleife verwenden möchtest, dann musst du hier nochmal eine weitere Variable übergeben, mit der du dann arbeitest. Also meistens heißt es dann irgendwie Key und dann benutzt du ein gleicher Zeichen und ein größerer Zeichen und somit kannst du dann hier quasi den Key benutzen. Dann kannst du hier Key ausgeben mit einem Bindestrich.
habe ich jetzt das Ganze zusammengehängt und dann können wir das Ganze hier mal kurz anzeigen, wie das dann aussieht. Und du siehst hier, jeder einzelne Schlüssel wurde ausgegeben. Also einmal Home-Startseite, hier Home-Startseite mit einem Bindestrich, About und so weiter. Und das Gleiche, was ich auch davor erzählt habe mit Continue und Break, das kannst du auch in so einer For-Each-Schleife benutzen. Und du kannst auch diese Schleifen ineinander verpacken, also verschachteln.
Wenn du zum Beispiel Unter-Arrays hast in einem Array, dann kannst du dann weitere For-Eaches darin ausführen. Die letzte Schleife, die eigentlich eher seltener benutzt wird, aber die gibt es dennoch in PHP, ist die sogenannte Do-While-Schleife. Und das ist eine fußgesteuerte Schleife. Die schreibst du so auf, du schreibst ein Do rein, dann...
geschweifte Klammern und dann kommt erst die Bedienung in dem While und dann kannst du hier irgendwas abfragen. Und so würde dann die Schleife aussehen. In der While-Bedienung schreibst du eben deine Bedienung, wie du das auch aus den anderen Schleifen kennst und deine Logik passiert hier oben.
Und der einzige Unterschied ist, zwischen den anderen Schleifen ist, du kommst in jedem Fall hier in die Schleife rein. Das wird am Anfang nicht überprüft, darfst du überhaupt rein, sondern du kommst mindestens einmal hier rein, erhöhst das um 1 und dann wird geschaut, Soll die Schleife wiederholt werden oder eben nicht? Das ist halt der Unterschied zwischen Fuß- und Kopfgesteuerten Schleifen. Und damit wären wir mit einem Schleifen durch. Die nächste Kontrollstruktur wäre ein Include, denn du kannst mit einem Include eine weitere Datei einbinden, eine externe, und hast somit sozusagen den Kontroll- oder den Fluss des Programms beeinflusst.
Denn wenn ich zum Beispiel hier eine neue Datei anlege, die heißt dann irgendwie Test.php, Und diese Test-PHP include ich einmal hier. Ein Include sieht so aus, dass du einfach das Schlüsselwort Include angibst und dann den Pfad zu der Datei. Es gibt eine Konstante in PHP, die heißt dann doppelt Unterstrich und hat ein dir. Und das sagt ja einfach dein aktuelles Verzeichnis, wo sich dein Skript befindet.
Also in diesem Fall liegt ja meine Index-PHP hier und direkt, sorry, ich habe hier falschen Namen gegeben, hier Test-PHP und direkt auf der gleichen Ebene befindet sich halt Test-PHP. Und mit dir kannst du halt wunderbar arbeiten, dass du eben auch zum Beispiel einen Ordner höher springen kannst, weil du eben von der PHP-Datei aus ausgehen kannst. Und auf jeden Fall hast du mit einem Include quasi, ich muss dir das Ganze so vorstellen, dass der Code von oben nach unten abgearbeitet wird.
Er springt zwischendurch mal kurz in diese PHP-Datei rein, führt den Code in der Datei aus und wenn er dann fertig ist, geht er hier dann weiter. Und deswegen spricht man hier von einer Kontrollstruktur, weil der Programmfluss sozusagen auch mit beeinflusst wird. Und mit einem Include kannst du zum Beispiel diesen kompletten HTML-Code exportieren. Also du könntest zum Beispiel sagen, wir möchten unsere PHP-Datei ein wenig aufräumen und dieser ganze Text, das ist eigentlich irgendein...
Layout, also erstelle ich mal eine neue Datei, die heißt dann Layout.php und in diese Layout.php kommt eben dieser ganze HTML-Code rein und in meiner Index.php bleibt nur noch der Include zu der Layout.php und ich kann jetzt anschließend dieses abschließende PHP-Tag herausnehmen. Und ich sehe immer noch meine Seite. Denn das Schöne ist, die Variablen, die du hier angelegt hast, die sind auch in dem Include vorhanden.
Ich habe ja hier diesen Titel zum Beispiel definiert und in Layout benutze ich den Titel hier oben, beziehungsweise ich habe hier immer noch die Seite. Also Titel, weil du ja quasi einmal diese Variablen erzeugt hast und Mit dem Include führst du einfach nur einen weiteren PHP-Skript aus. Die Variablen, die du vorher erzeugt hast, die sind immer noch da, die sind nirgendwo hin verschwunden.
Das musst du dir mal so vorstellen. Und das heißt, wenn ich jetzt diesen Code ausführe, hat sich nach außen hin nichts geändert, aber ich habe eine bessere Übersicht, weil ich eben einen Teil ausgelagert habe in andere Dateien. Und Include ist ein sehr mächtiges Tool.
Besonders am Anfang ist es ganz wichtig, den zu benutzen, weil du eben ganz viele HTML-Teile herausnehmen kannst in diesem fall macht sogar es sinn so innerhalb eines html php-code einzubauen ich kann dir so ein beispiel zeigen sagen wir mal wir haben hier die navigation die navigation würdest du ja an mehreren seiten anzeigen du bist ja aber nicht jedes mal kopieren dann würdest du ja auch eine neue datei erstellen die heißt dann eben na wie php in diese navi php würdest du deine Navi übertragen und in deine Layout PHP würdest du hier einfach ein PHP Tag reinschreiben, dann hier ein Include und dann würdest du wieder hier mit einem Dir arbeiten und sagen, hier die Navi PHP einbinden. Und schon kannst du quasi für deine nächste Seite, für deine Kontaktseite, auch die gleiche Navi wieder inkluden und wiederverwenden. Und damit hast du dann Dinge, die sich immer wieder wiederholen, in einzelnen Dateien ausgelagert. Neben Include gibt es auch noch ein Require. Ein Require funktioniert genauso wie ein Include.
Du würdest hier auch einfach die Layout PHP einbinden. Das Einzige, was sich zwischen einem Require und Include unterscheidet, ist die Fehlermeldung. Also während du bei einem Include, sagen wir mal, du hast ein Include ausgeführt und im Layout hast du irgendeinen PHP-Fehler, würdest du nur eine kleine Warnung bekommen. Während bei einem Require du eine wirkliche Fehlermeldung kriegen würdest und das Skript abstürzen würde an dieser Stelle. Das heißt, wenn man jetzt strikter arbeiten wollen würde und schon beim Entwickeln direkt die Fehler sehen möchte, dann sollte man eigentlich ein Require benutzen.
Und wenn man ein bisschen sich nicht so ganz darauf verlassen kann, dass man sauber arbeitet, und sich sagt, gut, dann ignoriere ich einfach die ganzen Warnungen, die vom Skript kommen, dann sollte man ein Include benutzen. Zusätzlich gibt es ein Include-Once. Das gleiche gibt es auch bei Require-Once. Damit kannst du halt eine Datei ein einziges Mal einbinden, aber das wird erst viel, viel später interessant.
Jetzt mit diesem Wissensstand ist das halt noch nicht interessant. So, kommen wir als nächstes zu den Funktionen. Eine Funktion wird immer dann gebraucht, wenn du gewisse Code-Abläufe zusammenfassen möchtest zu einem einzigen Block und du diesen dann halt immer wieder wiederverwenden möchtest. Kommen wir zunächst mal zu der Syntax von der Funktion, wie man diese definiert. Du schreibst einfach das Schlüsselwort Function, dann definierst du einen Funktionsnamen, zum Beispiel Test, dann kommen Klammern und dann kommen geschweifte Klammern.
Und das ist eine Funktionsdefinition. Hier sagst du im Grunde, was soll mit der Funktion passieren, sobald diese irgendwann aufgerufen wurde. Das heißt, ich kann hier zum Beispiel ein Echo-Test reinschreiben und sagen, ich brauche diese Funktion, um das Wort Test auszugeben. Und damit es auch dann letztendlich passiert, musst du natürlich die Funktion aufrufen. Das heißt, du würdest dann diesen Aufruf irgendwo einbauen mit einem Semikolon dahinter.
Kannst du auch mehrfach das Ganze ausführen. Und hier wurde dann quasi dreimal das Wort Test ausgegeben. Und so sieht dann eben eine Funktion aus.
Natürlich kommt es ja manchmal vor, dass man gleiche Dinge tun möchte, aber mit vielleicht unterschiedlichen Werten. Dafür hast du die Möglichkeit, in den Funktionen sogenannte Parameter zu definieren. Du kannst zum Beispiel sagen, du möchtest hinter dem Test irgendeine Zahl ausgeben.
Das heißt, du kannst dir im Funktionskopf zum Beispiel sagen, es wird irgendwann eine Zahl an die Funktion übergeben. Und diese Zahl, die gibst du halt mit aus. Damit diese Zahl in der Funktion dann anschließend befüllt wird, musst du Beim Aufruf der Funktion diese Zahl mit übergeben. Du kannst hier zum Beispiel 2, 5, 6 übergeben.
Das heißt dann wiederum, du hast die Funktion aufgerufen mit dem Parameter 2. Diese 2 ist in die Funktion hineingekommen und es gab dann eine Ausgabe mit Test, Echo und dann die Zahl dahinter. Du kannst auch mehrere Parameter übergeben. Du kannst hier mit einem Komma zum Beispiel eine Zahl 2 übergeben und diese Zahl 2 wird dann auch mit ausgegeben oder mit der ersten multipliziert, sagen wir mal.
Machen wir mal hier so eine Multiplikationsfunktion. So, das heißt, in diesem Fall musst du auch beim Aufrufen auch den zweiten Parameter übergeben, also Komma 2, Komma 2, Komma 2. Und dann würdest du halt jedes Mal die Zahl multiplizieren. Beziehungsweise in diesem Fall müsstest du sogar diese Multiplikation in Klammern zusammensetzen, damit das erstmal zusammen berechnet wird und dann das Ergebnis davon dann mit dem Text zusammengebaut wird.
Also einfach nur ohne Klammern würde es natürlich hier an der Stelle nicht gehen. Als nächstes kannst du auch Parameter optional definieren und ihnen auch einen Default-Wert vorgeben. Sagen wir mal in unserem Beispiel, wir sehen ja hier die Zahl 2, wird immer als 2 übergeben.
Dann können wir diese auch als 2 einmal festlegen und dann erst wenn wir die Zahl 2 übergeben, Wenn wir eine andere Zahl brauchen, wird da eine andere definiert. Und das können wir so machen, indem du hier einfach ist gleich 2 reinschreibst. Und damit hast du quasi gesagt, okay, wenn hier nichts reinkommt, dann übergebe der Zahl 2 den Wert 2. Das heißt, du kannst diese ganzen Aufrufe ohne der Zahl wieder benutzen. Und wenn du was anderes haben möchtest, dann schreibst du hier zum Beispiel eine 3 rein. Dann wird hier diese 3 überschreibt, die 2, die am Anfang vordefiniert wurden.
wurde. So, jetzt habe ich aber natürlich nur einfach irgendwas ausgegeben, aber in vielen Fällen macht es auch Sinn, dass du eine Funktion benutzt, die irgendwas macht und diese Funktion wird wiederum intern in einer anderen Funktion aufgerufen. Und damit die Funktionen nach außen irgendwie was ausgeben können, gibt es sogenannte Return-Werte. Weil jetzt hast du hier ja einfach nur den Wert ausgegeben, aber diese Zahl, die kannst du jetzt nicht in irgendeine Variable zwischenspeichern.
Du kannst jetzt nicht irgendwie das Ergebnis dir irgendwie greifen und damit dann weiterarbeiten. Das geht so nicht. Damit du das aber machen kannst, kannst du mit einem Return den Wert zum Beispiel ausgeben.
damit wurde der wert jetzt zwar nicht ausgegeben im sinne von eco aber du kannst jetzt den wert der aus der funktion herauskommt in eine variable zwischenspeichern und kannst hier zum beispiel hinschreiben variable 1 ist gleich test variable 2 ist gleich test und variable 3 ist gleich Test. Und somit hast du jetzt quasi drei unterschiedliche Variablen mit drei unterschiedlichen Werten vordefiniert. Und das geht halt nur, wenn du ein Return hast.
Übrigens, die Variablen Variablen haben eine gewisse Sichtbarkeit und zwar ist das so, innerhalb einer Funktion siehst du nicht diese Variablen. Du kannst jetzt nicht einfach so hingehen und sagen, Echo Seite, weil du ja hier oben eine Variable definiert hast. Das geht nicht.
Denn innerhalb einer Funktion gelten nur die Variablen, die auch als Parameter übergeben wurden. Das heißt, du müsstest dir dann die Variablen, die du benötigst, irgendwie in die Funktion hineinladen. Und dafür kannst du dann zum Beispiel Funktionen benutzen.
Einzige Ausnahme wären natürlich die superglobalen Variablen von PHP. Die kannst du natürlich hier ausgeben. Also du kannst hier ein Get aufrufen.
Und du kannst auch leider in so einer Funktion diesen Get überlaufen. überschreiben und auch an einer anderen Stelle dann eben dadurch einen Fehler verursachen. Als nächstes wären dann die Datentypen.
Es ist ja so, ich habe ja am Anfang des Videos erzählt, dass PHP eine schwach typisierte Programmiersprache ist, aber nichtsdestotrotz kannst du einige Typen vordefinieren in Funktionen und Rückgabewerten, weil damit kannst du dann das Ganze ein wenig besser steuern oder beziehungsweise deinen Quellcode absichern. Denn es gibt da ein paar kleine Probleme. Lass uns erstmal ein bisschen über die Typisierung von PHP sprechen. Also du siehst hier zum Beispiel die Variable home, die hat den Wert Startseite.
Und das ist halt ganz einfach. PHP weiß, okay, Startseite ist ein Text. Also es muss die home Variable vom Typ Text sein, also String.
Was aber, wenn ich 1,5 reinschreibe? Ist das noch ein Text oder ist das schon eine Zahl oder ist das eine Gleitkommazahl oder ist das ein Boolean? Das hier ist die Frage. Und natürlich kann man diese Frage jetzt nicht einfach so beantworten, weil es kommt natürlich darauf an, was du mit dieser Variable tun willst. Wenn du mit der Zahl so einfach rechnen wollen würdest, dann ist das natürlich eine Gleitkommazahl.
So, aber wenn ich dieses Komma 5 hinten entferne, wird das schon wieder noch schwieriger, weil ist das jetzt eine Zahl? Weil 1 wird ja auch zum Beispiel in PHP als Boolean, also als True definiert. Und da weiß dann PHP nicht genau, soll das als eine Zahl behandeln, als True oder False oder wirklich einfach nur als Text. Und damit du hier PHP genau sagen kannst, hör mal zu, ich erwarte hier eine Zahl an der Stelle, kannst du das Ganze auch definieren in Funktionen.
Du kannst hier zum Beispiel hinschreiben, okay, ich weiß ganz genau, diese beiden Zahlen sind... Ganz Zahlen, weil ich habe hier ganze Zahlen übergeben und keine Kommazahlen. Also schreibe ich hier vorne ein int und auch hier vorne ein int.
Und somit weiß PHP, an die Funktion darf nichts anderes außer Zahlen übergeben werden. Das heißt, ich kann diese Test 2 zum Beispiel so aufrufen und es würde halt immer noch funktionieren. Aber intern in der Funktion würde PHP jetzt aus diesem Text, weil es ja in Hochkommand gesetzt ist, eben das Ganze in eine Zahl umwandeln automatisch.
Neben int gibt es noch weitere Typen, wie zum Beispiel string oder array. Du kannst auch hier erwarten, dass auf jeden Fall ein array übergeben werden soll, also die Navigation zum Beispiel. Oder auch float, damit du eben auch Gleitkommazahlen übergeben kannst und natürlich ein bool, damit du auch true oder false übergeben kannst. Sprich, PHP wandelt dann automatisch, je nachdem, was du für einen Wert übergeben hast, das Ganze in einen anderen Typen. und du weißt halt, Der Vorteil daran ist halt, du weißt intern in der Funktion, es kommt auf jeden Fall ein Wert rein, der diesen Typen enthält und dann muss PHP nicht mehr irgendwie weiter nachdenken und irgendwelche anderen Werte daraus interpretieren.
Das gleiche kannst du auch natürlich für die Ausgabe definieren. Du möchtest zum Beispiel hier in dieser Funktion sagen, dass der Rückgabewert auf jeden Fall eine Zahl bleibt. Den Rückgabewert definierst du hier hinten hinter der... Klammer.
Und zwar gibst du hier einen Doppelpunkt an und dann schreibst du, okay, der Rückgabewert wäre ein Integer. Und somit würdest du quasi sagen, dass hier eine Zahl zurückkommen würde. Und auch hier hast du den Vorteil, dass PHP eben das Ergebnis dir in diesen Wert umwandelt.
Und du dann auf jeden Fall dir sicher sein kannst, dass das, was dann nachher in den Variablen drinsteht, ist auch vom Typ. Integer. Nun gibt es eine weitere Sonderheit und zwar gibt es ja die Variable null. Davon habe ich ja noch gar nichts erzählt, aber du kannst zum Beispiel einen Wert definieren, der heißt dann irgendwie home ist gleich null. Und null bedeutet, dass die Variable nicht definiert ist.
Die ist zwar schon mal da, die hat aber gar keinen Wert und noch gar keinen Typen und die existiert noch gar nicht sozusagen. Und solche Dinge, die kannst du auch als Als Rückgabewert und als Parameter definieren. Du kannst ja auch, wenn du zum Beispiel eine Null übergeben möchtest an eine Funktion, dann kannst du das nicht einfach so machen, weil du ja das Ganze als Integer definiert hast. Du musst auch der Funktion sagen, erlaube auch Nulls.
Und das kann man machen, indem man die Type Hints auch als Nullable definiert. Und das machst du, indem du hier vorne ein Fragezeichen reinschreibst. Du sagst quasi, ich erwarte...
An dieser Stelle entweder eine Zahl oder einen Null. Und das gleiche gilt auch für den Rückgabewert. Hier sagst du, dass als Ergebnis kommt raus, entweder ist das eine ganze Zahl oder es wird ein Null sein. Nullable ist ein klein wenig komplizierteres Thema und ich glaube, es macht jetzt in dieser Zusammenfassung noch gar keinen Sinn, ein Nullable zu benutzen.
Aber ich wollte einmal nur kurz erwähnen, dass es... dass du schon mal davon gehört hast. Und so wird ja eine Funktion jetzt definiert. Natürlich bietet dir PHP von sich auch noch sehr, sehr viele Funktionen an und die sollte man benutzen.
Eine Übersicht der Funktionen kannst du zum Beispiel in der PHP-Dokumentation finden. Du hast zum Beispiel im PHP-Handbuch die Funktionsreferenzen und da werden die Funktionen zu verschiedenen... Gruppen zusammengefasst und dann kannst du daraus dann eben deine Funktion heraussuchen.
Du kannst auch hier nach suchen. Sagen wir mal, du möchtest schauen, ob ein Text mit einem anderen Zeichen beginnt. Da kannst du zum Beispiel suchen nach einer Funktion wie zum Beispiel str starts with.
Das ist halt eine interne Funktion von PHP, die sagt dir, wenn ein, also ob ein ob ein Text mit einem gewissen Text beginnt oder eben nicht. Und du siehst auch hier schon in der Beschreibung, wie die Funktion aufgebaut ist. Die hat hier vorne als Parameter Strings, weil ich dir erzählt habe, du kannst Types definieren, die erwartet zwei Texte und als Ergebnis kriegst du ein True oder False zurück. Das definiert halt die Funktion so. Und weiter unten in der Dokumentation findest du dann halt die jeweilige Beschreibung zu dem zu der Funktion und wie die eben funktioniert.
Und das ist halt auch ein Problem, was ich auch immer wieder sehe bei Entwicklern, dass die die Funktionen von PHP nicht benutzen. Ein guter Beispiel ist, wenn die zum Beispiel eine Auflistung von, sagen wir mal, Blogbeiträgen auf jeder Seite darstellen und dann eine Paginierung auf der Webseite einbauen. Und dann gibt es ja eine maximale Page, die man besuchen kann, und eine minimale Page. Du kannst nicht auf die Seite minus 1 draufgehen, um die Blogbeiträge zu sehen, und du kannst nicht auf die Seite eine Million hingehen, um diese Blogbeiträge, um Blogbeiträge davon zu sehen.
Und dann siehst du dann oft solche Abfragen wie f x kleiner 0 Dann setze x auf 0, also die Page meine ich, dann schreibe ich auch gleich mal hier Page rein. Und dann fragen sie, if Page größer Max Pages, dann setze Page auf Max Page, damit du eben nicht aus deiner minimalen, maximalen Page Range rausfliegst. Aber in PHP gibt es zum Beispiel Funktionen, die heißen dann min und max.
Du kannst dann halt eben mit einem maximalen Wert prüfen, also mit der Funktion Max kannst du zum Beispiel ausgeben, welche von beiden Zahlen die größere ist. Und da könntest du zum Beispiel sagen, Page wäre in diesem Fall MinPageMaxPages. Du willst hier davon die kleinste Zahl haben, wenn jemand dir als Page zum Beispiel eine Million übergibt und du aber nur 10 Seiten hast, dann kriegst du hier nur eine 10. und bei Max Sagst du, dieses Ergebnis möchte ich haben, aber das darf nicht kleiner als 0 sein.
Also du willst das größere Wert haben. Das heißt, wenn jemand als Page minus 1000 übergibt, kriegst du hier immer noch das kleinste Wert und zwar die 0 heraus. Und diese Zusammenfassung von Funktionen, die du ineinander verschachteln kannst, die erspart dir deinen kompletten Quellcode mit diesen if-else-Statements.
Das heißt, mein Appell an dieser Stelle, Schau dir wirklich mal an, ob es nicht eine Funktion von PHP bereits gibt, die dein Problem lösen sollte. Denn es ist oft so, dass diese Funktionen von PHP, die sind intern in einer anderen Programmiersprache geschrieben in C++ und die sind sauschnell, viel schneller als die Ausführung, die du jetzt hier direkt in PHP ausführen würdest. Es gibt noch zwei weitere PHP-interne Funktionen, die ich auf jeden Fall noch erwähnt haben möchte in diesem ganzen Tutorial.
Und zwar eine sehr wichtige wäre Error Reporting mit der Konstante EALL. Es ist so, dass oft in PHP die Fehlermeldungen unterdrückt werden oder versteckt werden, damit man halt nicht alle oder nur ein paar wenige Fehler sieht. Mit der Funktion Error Reporting aktivierst du alle Fehlermeldungen, auch Warnungen.
Wenn die bei dir aktiviert ist, dann meckert bei dir auch PHP bei jeder Kleinigkeit und dann weißt du, ob dein Quellcode sauber geschrieben ist oder eben nicht. Viele aktivieren das Ganze nicht und wundern sich dann nachher, warum sie irgendwelche komischen, nicht reproduzierbaren Fehler haben. Also diese Funktion ist sehr wichtig.
Die nächste Funktion, die wichtig wäre, ist die Funktion FilterInput von PHP. Und zwar ist das so, ich habe dir davor diese super globale Get-Variable gezeigt. Das ist ja eine globale Variable und die kannst du halt immer mit einem Wert überschreiben. Manchmal aus Versehen, manchmal mit Absicht. Und deshalb sollte man eigentlich am besten die Funktion FilterInput verwenden und dann eben aus der Get-Variable sich eben einen Wert auslesen und du kannst noch zusätzlich den Inhalt in dieser Get-Variable noch zusätzlich filtern und dort irgendwelchen einen Schadcode oder irgendwelche Sonderzeichen entfernen, damit sie erst gar nicht bei dir in den Quellcode reinkommen.
Mit Filter Input kannst du halt den Zugriff auf diese globalen Variablen komplett verhindern. Wenn du zum Beispiel wie davor aus Page dir den Wert auslesen möchtest, dann brauchst du hier nur sowas aufrufen und somit kriegst du dann schon den Wert aus. aus page heraus die wir dann zum beispiel hier über index.php ausgeben also index page ist gleich about ich muss natürlich noch kurz ausgeben und da kriegst du dann eben dann erbaut dieses filter input mit dem parameter input get ist das gleiche wie wenn du jetzt page ist gleich get Page aufrufen würdest, aber mit dem Vorteil, dass du eben an der Stelle eine Funktion benutzt und davon den Rückgabewert kriegst.
Das heißt, du kannst den Wert nicht manipulieren und kommst auch gar nicht dazu, den zu bearbeiten. Und es wird nochmal hier gefiltert, also als ob du jetzt hier außenrum noch eine weitere Funktion aufrufen würdest, um das Ganze zu filtern. Das gleiche kannst du natürlich auch für Input Post benutzen. Und ich meine, es gibt noch Input Server und auch Input Session und so weiter.
In der Dokumentation dazu findest du die ganzen Typen, die es gibt. Input Post, Input Cookie, Server, Environment. Okay, Session gibt es nicht. Aber auf jeden Fall, somit kannst du eben den Zugriff drauf einschränken und eben nicht mehr diese super globalen Variablen benutzen.
Weil wenn du sie vermeidest, dann wird das Leben viel einfacher sein. Natürlich gibt es in PHP nicht nur einfache Funktionen, sondern es gibt auch sogenannte anonyme Funktionen. Die anonymen Funktionen unterscheiden sich zu den normalen Funktionen, die haben hier keinen Namen. Das heißt, du weist eine Funktion einer Variable zu und kannst dann diese Variable direkt aufrufen.
Und ich zeige dir gleich mal, wie das Ganze funktioniert. Ich lösche das alles mal hier wieder, damit wir ein bisschen Übersicht haben. So sieht die Syntax aus.
Du siehst, ich habe hier eine Variable erstellt und dieser Variable habe ich als Wert nicht irgendwie einen Text oder einen Null zugewiesen. sondern ich habe ihr eine Funktion zugewiesen und die Funktion hat ja gar keinen Namen, deswegen heißt sie anonyme Funktion. Und in dieser Funktion gelten die gleichen Regeln wie auch bei der anderen Funktion auch. Also du kannst ja auch eine Parameterliste erstellen, Zahl 1 und Zahl 2 und du kannst auch einen Rückgabewert definieren und auch die ganzen Type-Ins auch in diese anonyme Funktion übergeben.
Der Unterschied ist jetzt an der Stelle beim Aufrufen. Und zwar ist das so, dass du die Variable aufrufen musst mit Klammern. Also in diesem Fall, wenn ich diese anonyme Funktion aufrufen wollen würde, dann kann ich einfach hier anonym aufrufen, Klammer auf, Klammer zu, und dann schreibe ich hier zwei Zahlen hinein. Diese anonymen Funktionen sind deshalb wichtig, weil du quasi so Wegwerffunktionen definiert hast.
Die verwendet man... Sehr oft, wenn du zum Beispiel Dinge kurz mal eben sortieren möchtest, also irgendwie eine Liste, wenn du sie kurz mal eben sortieren möchtest, danach interessiert dich diese Funktion nicht mehr, dann wird die eben verworfen. Mit anonymen Funktionen kannst du dir also sehr viel Arbeitsspeicher sparen.
Und einige Funktionen von PHP erwarten eine anonyme Funktion als Parameter. Es gibt zum Beispiel die Funktion usort von PHP. Und in der Definition von der Funktion siehst du hier, dass ein Callable erwartet wird. Und dieser Callable ist oder kann auch eben die anonyme Funktion sein.
Mit USort kannst du zum Beispiel eine Liste durchgehen, also diesen Array, den wir hier definiert haben, kannst du zum Beispiel sortieren nach deiner eigenen Logik. Du kannst zum Beispiel sagen, Home kommt zuerst, er baut als zweites und so weiter. Und diese Logik, die kannst du in so einer anonymen Funktion definieren und dann anschließend You Sort.
aufrufen, dort zum Beispiel die Navigation übergeben und dann anschließend den Callable, also die anonyme Funktion. Du kannst auch, statt das Ganze an eine Variable zu übergeben, kannst du auch direkt diese anonyme Funktion als Parameter übergeben. Das kann man mit anonymen Funktionen machen. Eine weitere Sonderheit von anonymen Funktionen ist, dass du dir Variablen von außen in die Funktion hineinziehen kannst. Du kannst nämlich hier vorne ein Use Statement hinschreiben und dann hinschreiben zum Beispiel Navigation.
Und damit hast du quasi erlaubt, dass in dieser anonymen Funktion diese Navigation dir zur Verfügung steht. Du erinnerst dich, bei der normalen Funktion ging das nicht. Du konntest nicht einfach so diese Variable von außen nach innen hineinziehen.
Aber das sollte man vielleicht auch nicht benutzen und stattdessen eher Funktionen einsetzen, um auf Variablen zuzugreifen. Manchmal ist es aber auch so, dass eine Funktion so klein ist, dass du einfach nur deine kleine Berechnung hast. Also sagen wir in unserem Fall, ich hole mal dieses use hier raus und hier wird einfach nur ein return Zahl 1 mal Zahl 2 definiert werden. Und das ist halt ja eine sehr, sehr kleine Funktion. Es ist nur ein einziger Zeiler.
Und dann hast du hier so einen großen Code. Und einige Entwickler finden das Ganze eben nicht schön. Und dafür gibt es noch eine andere Schreibweise oder eine Alternative. Und zwar Pfeilfunktionen. Und so sieht dann der Aufbau der Pfeilfunktion aus.
Du schreibst hier als Schlüsselwort fn und nicht mehr function. Und dann hast du hier ganz normal wie bei einer Funktion halt auch deine Zahl 1 und deine Zahl 2 und auch deinen Rückgabewert. Nur diesmal kommen keine geschweiften Klammern, sondern eben ein Pfeil. Deswegen heißt es Pfeilfunction.
Und dann kommt dann deine Berechnung und du kannst hier halt nicht mehr als eine Zahl reinschreiben, deshalb benutzt man solche Pfeilfunktionen lieber gerne für ganz kleine Dinge, wo du wirklich nur irgendwas kurzes berechnen möchtest. Diese Pfeilfunktion unterscheidet sich aber von der anonymen Funktion und zwar dahin, dass du Variablen von außen in der Pfeilfunktion benutzen kannst. Ich kann hier zum Beispiel eine Zahl 3 definieren, die hätte den Wert 10. Und ich kann hier in dieser Berechnung einfach hier sagen mal Zahl 3 und dann könnte ich das Ganze wiederverwenden. Bei einer anonymen Funktion müsste ich eben ein use einbauen und eben die Zahl 3 in die anonyme Funktion einbauen oder wiederverwenden, einbeziehen. Und in diesem Fall geht es eben nicht.
In diesem Fall kann man auf die Zahl einfach so drauf zugreifen. Lass uns doch mal jetzt das alles, was wir bisher gelernt haben, an einem konkreten Beispiel umsetzen und eben das Ganze eben anwenden, damit wir ein bisschen Übung reinkriegen. So, ich habe jetzt in der Index-PHP jetzt alles zurückgesetzt und wir sind sozusagen am Anfang, wie es ganz normal ist.
vorher war ich gucke mir die seite an das ist hier ganz normale startseite und so weiter du könntest das bestimmten viel hübscher gestalten es geht ja hier ist mal um php und nicht um das aussehen lasst uns zunächst mal analysieren aus welchen elementen besteht die seite weil das ist halt wichtig zu wissen zunächst mal du siehst du hier oben die navigation dann hast du in der mitte hier ein content und unten hast du eben ein futter und auf jeder seite soll sich ja eigentlich einige elemente halt immer wieder wiederholen wie zum beispiel der futter oder eben diese navigation die soll ja auf jeder einzelnen seite gleich bleiben Nur der Inhalt soll sich ja verändern. Das heißt, lasst uns erstmal die Startseite kopieren und diese einzelnen Seiten anlegen, also Kontakt und über mich. Ich kopiere dazu jetzt einfach mal die Index-BHP zweimal und benenne einmal das eine um in Contact und das nächste in About. So, und jetzt habe ich ja die einzelnen PHP-Dateien und die müsste ich ja erstmal verlinken. Das habe ich jetzt hier in der Navigation schon umgesetzt.
Und für jede einzelne Datei kommt ja jetzt ein anderer Inhalt hinein, der dann angezeigt werden soll. Kontaktseite steht dann einfach Kontakt und dann kommt hier ein Text rein. Hier ist ein Kontaktformular oder so. Und bei About schreiben wir über mich und dann kommt dann hier ganz viel Text.
So, das heißt, im ersten Schritt haben wir schon mal eine Verlinkung erstellt. Du siehst hier, die PHP-Datei hat sich geändert und du siehst hier einen anderen Inhalt. Hier habe ich mich vertippt, aber macht nichts, das lasse ich jetzt einfach so stehen. Und jetzt haben wir schon mal so eine kleine grundlegende Seite aufgebaut. Das heißt, hier könntest du jetzt in jeder einzelnen PHP-Datei jetzt deinen Text eintragen und hättest schon mit PHP deine erste kleine Webseite umgesetzt.
Aber du siehst ja zunächst mal... Was passiert, wenn wir zum Beispiel die Navigation erweitern würden? Sagen wir, da kommt jetzt noch ein weiterer Link hinzu. Dann hättest du hier das Problem, dass du in jede einzelne PHP reingehen müsstest und diese Navigation rüber kopieren müsstest. Das ist natürlich nicht so schön.
Das heißt, als nächstes sollte man die Elemente, die sich über mehrere Seiten wiederholen, auslagern in einzelnen Dateien. Lass uns erstmal mit dem einfachsten beginnen und zwar dem Footer. Das heißt, ich erstelle jetzt eine neue Datei, die heißt einfach nur Footer.php und in die Footer.php kommt einfach dieser ganze Text rein.
Die FUTA-PHP muss natürlich inkludiert werden. Du hast ja davor mitbekommen, es gibt Kontrollstrukturen und zwar eine davon ist Include. Include bindet eine Datei ein, führt die dann eben aus.
Der Code wird von oben nach unten verarbeitet. Hier zwischendurch wird eine weitere Datei mitverarbeitet und dann wird der Rest mit ausgegeben. Das heißt, hier können wir...
einfach die Futter-PHP inkluden. Das Gleiche machen wir auch natürlich auf unserer Kontaktseite und auf der About-Seite. Wenn ich jetzt im Footer irgendwas verändere, ist das schon automatisch bei allen anderen Seiten mit verändert.
Das nächste, was ich übertragen wollen würde, wäre die Navigation. Also erstelle ich eine neue Datei, die heißt Navi.php. Und da übertrage ich auch alles hinein.
Also ich kann mir jetzt aussuchen, ob ich jetzt den kompletten Header da übertrage oder nur das Navi-Element. Ich glaube, in diesem Fall mache ich das wirklich nur mit der Navi. So und auch die Navi include ich jetzt einfach.
diesen im blut übertrage ich dann natürlich in alle anderen php dateien halt auch als nächstes kann ich ja das gleiche für den gesamten head bereich auch machen weil wir haben ja hier überall die stylings definiert und dieses stylings die will ich natürlich auch in anderen seiten wieder verwenden weil alle seiten sollen ja gleich aussehen das heißt als nächstes könnte ich hier wirklich eine neue datei einstellen die heißt dann herr php und Da kommt dann auch eben der komplette Inhalt hinein aus der Head. Und das kann ich halt auch inkluden. Und jetzt sind die Seiten jetzt nicht mehr so unübersichtlich, sondern die sind jetzt ganz kompakt und ganz klein.
Das sieht schon jetzt ein bisschen angenehmer aus und du kannst jetzt halt viel einfacher deinen Inhalt da eintragen. Ich habe mich jetzt hier ein bisschen vertippt, das heißt natürlich nicht Include PHP, sondern Navi PHP. Ich habe an Include gedacht und habe jetzt was anderes eingetragen. Also so sieht das jetzt aus und du kannst dich halt durchklicken und du siehst halt immer noch, der Inhalt hat sich verändert. Im nächsten Schritt gehen wir mal die Inhalte an, die sich pro Seite wirklich unterscheiden, weil zur Zeit ist das ja so, dass wir zwar wiederverwendbaren Inhalt haben, wie zum Beispiel die Navigation, aber die muss sich ja doch auf jeder einzelnen Seite ein bisschen unterscheiden, aber im Grunde doch gleich bleiben.
Also zum Beispiel soll ja hier Startseite oder beziehungsweise zum Beispiel soll ja hier die Navigation auf aktiv gestellt werden, wenn ich mich auf einer anderen Seite befinde. Also ich bin hier auf der Kontaktseite, also soll hier Kontakt als aktiv markiert werden. Das machen wir im nächsten Schritt.
Wir könnten, wenn wir wollten, einfach hier in diesen HTML-Code die Logik reinschreiben. Das wäre aber ein, sage ich mal, dreckiges PHP. Also das wäre nicht sauber, wenn wir die Logik da reinschreiben würden. Denn, ich habe ja von Anfang an gesagt, ein PHP-Skript wird nach dem Eva-Prinzip verarbeitet. Also Eingabe, Verarbeitung, Ausgabe.
Das heißt... Im PHP bist du schon in der Ausgabe drin, das heißt, da sollte man eigentlich gar keine Logiken einbauen, beziehungsweise wenn dann nur so minimale Logiken wie zum Beispiel, soll ich irgendwas auf aktiv stellen oder nicht. Das heißt, wir müssen vor der Ausgabe schon irgendwie diese Navigation uns zusammensetzen lassen und die dann eben ausgeben.
Das machen wir mit einer Funktion. Viele trauen sich irgendwie nicht, eine Funktion zu erstellen, also besonders ganz am Anfang. Haben viele irgendwie Angst oder wollen nicht eine Funktion verwenden. Und in diesem Beispiel werde ich jetzt auf jeden Fall halt eine Funktion einsetzen.
Das heißt, ich erstelle eine neue Datei. Die heißt dann Functions.php. Und in die Functions kommt eine neue Funktion hinzu.
Also ich schreibe jetzt mal Function rein und dann überlegen wir uns mal, wie soll die Funktion lauten. Ich finde den Namen GetNavigation. Klingt eigentlich ganz sinnvoll, weil dann haben wir eine Funktion, die sagt uns, gib uns mal die Navigation und dann können wir die ausgeben. Und so habe ich dann die Funktion getNavigation definiert.
Als nächstes überlegen wir uns, was kriege ich denn von dieser Funktion dann zurück? Ich möchte ja eine Liste an Navigationselementen zurückkriegen. Das heißt, eine Liste, haben wir ja vorhin kennengelernt, ist ein Array. Das heißt, als Rückgabewert gibt es hier ein Array.
Dann lass uns doch mal gleich die Variable Navigation anlegen. ist ein leeres Array zunächst mal und dieses Array geben wir wieder zurück mit Return. Das heißt, wenn ich irgendwann diese Funktion aufrufe, kriege ich dann dieses Array zurück und kann das dann eben ausgeben. Im nächsten Schritt überlegen wir uns, was kommt denn in diese Liste hinein.
In diese Liste kommt ein Navigationselement hinein. Aber was ist ein Navigationselement? Ein Navigationselement besteht ja aus drei Informationen.
Du hast einmal ein Label. also die Beschriftung, dann hast du einmal den Target, wohin führt diese Navigation und du hast noch die Information, soll das jetzt auf aktiv gestellt werden oder eben nicht. Das heißt, ein Navigationselement in unserem Fall würde folgendermaßen aussehen, das wäre auch ein Array mit drei Werten. Einmal hätten wir unseren Label.
Sagen wir, bei der Startseite wäre es eben die Startseite. Das Target wäre dann in unserem Fall die Index-PHP. Und ob das jetzt auf Active gestellt ist oder nicht, das wäre in diesem Fall True.
Wir können dann eben ein Element auf Aktiv stellen. Und das ist jetzt ein Element. Und dieses Element fügen wir in die Liste hinzu. Also schreiben wir hier Navigation und erweitern das Ganze und fügen in die Liste eben ein weiteres Navigation-Element hinzu. Und somit haben wir eben die Startseite in der Liste hinzugefügt.
Und das gleiche machen wir natürlich für die anderen Elemente auch. Kopiere das alles, setze hier erstmal kurz auf False und dann hatten wir als Label Kontakt und über mich About PHP. Und jetzt haben wir eine Liste erstellt mit einzelnen Navigationselementen.
Als nächstes überlege ich mir mal, es wäre doch praktisch, wenn ich die Funktion aufrufe, dass die mir auch direkt schon ein Element auf aktiv stellt. Doch wie mache ich das am besten? Wir haben ja die einzelnen Elemente in die Liste hinzugefügt, aber wir wollen ja darauf schnell zugreifen. Das heißt, wir müssen am besten die einzelnen Elemente in der Liste irgendwie beschriften. Du kannst dir das Ganze so vorstellen, als wenn du ein Buch hättest.
Und bei einem Buch würdest du an der Seite so Lesezeichen anhängen mit Beschriftung, damit du eben schnell darauf zugreifen kannst. Und das Gleiche machen wir hier auch. Wir beschriften mit einer Kurzform dieses eine Element in der Liste.
Also in diesem Fall wäre das zum Beispiel Index. Das benennen wir mal hier Contact. und das benennen wir erbaut wir haben jetzt quasi einen lesezeichen eingebaut auf dieses eine element so und ich will ja von außen bestimmen wenn ich die funktion benutzen was soll oder welches element soll auf aktiv gestellt werden das heißt ich übergebe das ganze als parameter also definieren wir hier ein parameter der heißt dann irgendwie active element und es ist halt sehr wichtig dass du dir ein die parameter auch mit Typen angibst, also damit du PHP sagst, Achtung, da kommt jetzt ein Text hinein und nicht eine Zahl.
Das heißt, wir schreiben hier einfach mal einen String davor. So, und jetzt können wir, müssen wir sogar erstmal unsere Startseite deaktivieren, also erstmal auf Force setzen. Und ganz zum Schluss, nachdem wir die komplette Liste zusammengebaut haben, suchen wir uns ein Element heraus aus der Liste, und zwar dieses, was wir als Parameter übergeben.
Und aktivieren das Ganze. Und das geht dann folgendermaßen. Wir übergeben hier als Key die Variable Active Element.
Damit haben wir jetzt dieses eine Element anhand des Lesezeichens herausgesucht und können jetzt davon den Wert Active auf True setzen. Sprich, du hast überall am Anfang jetzt mal ActiveForce gehabt und dann sobald du eben das eine rausgepickt hast, setzt das Ganze auf True. So, und jetzt lass uns mal diese Funktion mal verwenden.
Das machen wir mal auf der Index.php. Und zwar, wie gesagt, Eingabe, Verarbeitung, Ausgabe. Das heißt, wir bauen hier oben unseren PHP-Code hinein. So, und wir erstellen eine neue Variable, die heißt navigation und holen uns den Inhalt aus der Funktion getNavigation. Natürlich wird das Ganze jetzt nicht funktionieren, weil du kannst nicht einfach so aus einer PHP-Datei irgendwas herausladen, das funktioniert so nicht.
Du musst hier in der Index-PHP sagen, include mir mal einmal die Functions-PHP. Damit ist dann die Funktion bekannt für den PHP-Skript, der gerade ausgeführt wird. Und dann anschließend hast du eben Zugriff auf die Funktion GetNavigation.
So, aber das hier reicht so nicht aus. Wir müssen nochmal die Fehlermeldungen aktivieren. Falls du jetzt irgendwie einen Fehler hast, dann sollst du den auch auf deiner Seite sehen.
Und falls du jetzt in diesem Tutorial nicht vorankommst, dann kannst du mir eine Frage in den Kommentaren reinschreiben und ich beantworte dir das Ganze. So, und wie ich gesagt habe, Fehlermeldungen müssen wir aktivieren, also schreibe ich hier Error Reporting E All und da gibt es noch einen Zusatz, eine INI-Einstellung, INI-Set, Display Errors und das setze ich auf On. Diese zwei Zeilen, die aktivieren die Fehlermeldungen, die sind ganz, ganz wichtig.
Wenn du die deaktiviert hast, dann siehst du meistens einfach nur eine leere Webseite und dann weißt du nicht, warum funktioniert denn dein Skript nicht. Wenn du diese zwei Zeilen eingetragen hast in dein PHP-Skript, dann siehst du sofort, okay, das und jenes funktioniert nicht. Ich kann dir das Ganze mal zeigen.
Ich kommentiere mal den Include aus, das heißt, mit einem Kommentar kannst du irgendwie einen Text in PHP reinschreiben und der wird nicht ausgeführt. Und wenn ich jetzt die Startseite öffnen würde, dann würde ich eine Fehlermeldung sehen. Und zwar siehst du hier die Fehlermeldung, da sagt, wir rufen eine undefined, also nicht definierte Funktion GetNavigation. Und deswegen gibt es ein Problem in der Index.php in Zeile 6. Und wenn wir in die Zeile 6 reinschauen, Tatsache, wir rufen die Funktion auf. Wenn ich das aber include, dann kommt ein weiterer Fehler und zwar sagt er mir, zu wenige Argumente wurden an die GetNavigation übergeben.
übergeben, denn wir haben ja davor gesagt, wir definieren Die Get-Navigation-Funktion, die erwartet ein Parameter und wir haben hier nichts zu übergeben in den Klammern, steht ja nichts. Das heißt, hier an der Stelle müssten wir zum Beispiel Index reinschreiben und dann funktioniert wieder alles. So, und als nächstes könnte man sich überlegen, ja gut, ich bin auf der Startseite, muss ich denn wirklich die Startseite übergeben? Das heißt, lass uns mal in der Navigation einen optionalen Parameter einbauen.
Vielleicht erinnerst du dich, der optionale Parameter wird so eingebaut dass du einfach hier einen die folgt wert definiert das heißt wenn ich jetzt navigation ohne Parameter aufrufe dann wird diese diese dieser Parameter per die folgt auf Index gestellt ich kann auf der Startseite das ganze auch weglassen bei anderen Seiten muss ich das natürlich auch aktivieren so wir haben jetzt die Navigation zwar geladen das ERIE aber das geben wir nirgendwo aus Das müssen wir Dieses Array müssen wir dann in der Navi-PHP ausgeben, weil das hier ist die Verarbeitung. Wir haben hier die Eingabe, wir benutzen hier zwar keine Variablen, aber das wäre die Eingabe. Hier hätten wir Verarbeitung und hier ist die Ausgabe.
Das heißt, lass uns mal in die Navi-PHP und das Ganze auch mal editieren. So, und jetzt zeige ich dir, wie du sauber innerhalb von einem HTML-Code PHP-Code einbauen kannst. Also sowas wie Schleifen und so weiter, so ein Ausgabeformat. Also wir wollen ja die Variable Navigation, die wir in der Index-PHP jetzt definiert haben. Der Quellcode wird ja von oben nach unten abgearbeitet.
Wir sind hier an der Stelle, Navigation-Variable wurde erstellt. Und jedes Mal, wenn hier irgendwas inkludiert wird, kennt diese PHP-Datei die Variablen, die vorher erstellt wurden. Das heißt, in der Navi-PHP können wir auf die Variable Navigation zugreifen. Das heißt, ich kann jetzt hier in der Navi.php eine kopfgesteuerte Schleife benutzen, eine ForEach, um ein Array-Element auszugeben. Das kann ich so machen.
ForEach Navigation S Navigation Element, weil ich für jedes einzelne Element eben einen Namen vergeben will, beziehungsweise einen variablen Namen haben möchte. So, und jetzt hast du ja hier gesehen, ich habe keine geschweiften Klammern gesetzt, sondern einen Doppelpunkt. Das heißt hier...
unterbreche ich sozusagen den PHP-Prozess kurz und kann ihn weiterführen mit einem End-For-Each. Somit habe ich quasi gesagt, ab hier ist es Schluss mit PHP und hier geht es weiter mit PHP und das bietet dir den Vorteil an, dass du innerhalb hier einfach einen HTML-Code direkt reinschreiben kannst. der dann auch sauber dargestellt wird.
In PHP müsstest du sonst hier irgendwie so ein Echo ausgeben und einen langen Text und das sieht halt alles nicht so schön aus. Deswegen arbeitet man hier mit einem For Each in dieser Art und Weise mit einem Doppelpunkt. Das gleiche kannst du zum Beispiel auch später mit einem If-Statement machen und dann kannst du hier auch ein End-If reinschreiben und das gleiche geht natürlich für die ganzen anderen Schleifen, auch Switch Case und so weiter.
So, das heißt diese... Elemente, die kann ich jetzt entfernen aus der Navigation und ich kann jetzt jedes einzelne Attribut von den Navigationselementen eben ausgeben. Wir haben hier in unserer Function definiert, es gibt ein Label, ein Target und ein Active.
Das heißt, ich kann jetzt von diesem Element zum Beispiel das Label ausgeben, etwa so. Und ich kann auch genau auf diese gleiche Art und Weise auch das Target ausgeben. Und wenn ich die Startseite aktualisiere, habe ich jetzt die ganzen Elemente drin stehen, aber es ist noch nicht als aktiv markiert. Um das Ganze als aktiv zu markieren, kann ich hier eine kleine If-Anweisung einbauen.
Und zwar kann ich hier abfragen, also wieder mit PHP-Text beginnen. If Navigation Element. davon dann active gleich, gleich, gleich true ist, also immer mit drei Gleicherzeichen abfragen, dann geben wir aus eine Klasse mit active. Aber das ist viel zu lang und viel zu unübersichtlich.
Es gibt davon auch eine Kurzform, wie man das Ganze verkürzen kann, und zwar folgendermaßen. Und zwar so, du kannst erstmal diese Shortform benutzen von PHP, dass du quasi das Ergebnis ausgeben willst. und dann schreibst du deine If-Anbindung.
Anweisung hier rein in Klammern und anschließend mit einem Fragezeichen kannst du angeben, was soll passieren, wenn hier die Bedienung zutrifft. Dann sagst du, okay, es wird die Klasse Active ausgegeben und mit einem Doppelpunkt kannst du sagen, was passieren soll, wenn es nicht zutrifft. Das heißt, das ist hier die Kurzschreibweise von, wenn das zutrifft, dann gebe das aus, ansonsten das hier.
Du kannst das Ganze auch noch weiter verkürzen, weil... Dieses gleich gleich true, das kannst du auch weglassen und dann ist es noch kürzer. Und so sieht das dann auf der Startseite aus. Wenn ich natürlich jetzt auf Contact klicke, dann sehe ich erstmal nichts, weil wir auf der Kontaktseite eben dieses Navigationselement nicht benutzen und wir die Navigation auch nicht aufgerufen haben.
Das heißt, das wäre dann der nächste Schritt und zwar diesen Bereich quasi aus der Index-PHP auch in die Contact und in die About-PHP zu übertragen. Natürlich müssen wir jetzt auch auf Contact sagen, dass wir auch die Kontaktseite als aktiv markiert haben wollen. Und auf der About-Seite wollen wir die About-Seite als aktiv markieren. Du siehst, wir können jetzt durchklicken, der Inhalt verändert sich und das aktive Element verändert sich auch.
Und zum Schluss könnte man nochmal sagen, ja gut, wir haben hier im Header steht überall Startseite dran, also hier auch oben Startseite. Lass uns doch mal hier auch eine Variable erstellen und die dann auch verändern. Also wir schreiben dann hier auch wieder vor so einen Title rein. Die Variable Title müssen wir auch in der Index.php und auch in anderen PHP-Dateien definieren. Also schreiben wir hier Startseite rein.
Und diesen Titel übertragen wir auch in About, also über uns oder über mich und in die Kontakt. Und den Titel können wir auch in das H1 auf der Startseite halt auch mit ausgeben. Jetzt haben wir als nächstes ein kleines Problem und zwar befinden sich ja alle diese Dateien auf einer gleichen Ebene und du könntest jetzt die FUTA, PHP und so weiter alles aufrufen. Es heißt, Das heißt, eigentlich im nächsten Schritt sollten man diese Dinge, die man inkludet, in einen eigenen Unterordner irgendwie übertragen. Das heißt, wir erstellen mal einen neuen Ordner, der heißt dann irgendwie, keine Ahnung, Includes.
Und wir übertragen dahin dann den Footer, Functions, Header und die Navi. Das Problem ist jetzt natürlich, die ganzen Pfade sind eben kaputt. Das heißt, wir müssen hier überall die Pfade eben ändern.
Aber das wäre jetzt auch sehr viel Aufwand. Das heißt, lass uns doch mal schauen, wie wir eigentlich den Content in eine eigene Datei übertragen und den dann eben einbinden. Wir können nämlich einen neuen Ordner erstellen, der heißt dann Content. und wir stellen hier neue dateien die heißen dann index php kontakt php und erbaut php Und da kommt jetzt in jede einzelne Datei eben der einzelne Content hinein.
Als nächstes können wir diesen ganzen Bereich hier mit diesen ganzen Doctypes und so weiter auch in unsere Includes übertragen und zwar das Ganze als Layout bezeichnen. Das heißt, ich übertrage das hier alles in die Layout-PHP und lasse das erstmal alles hier drin. Und in der Index-PHP inklude ich jetzt einfach mal das Layout.
Das gleiche mache ich jetzt natürlich in meiner Contact-PHP. und in der erbaut php aber im layout wird sich jetzt der content quasi ja wiederholen na also dieser inhalt hier das heißt wir müssen diese section hier in einen weiteren include verwenden umbenennen aber diesmal benutzen wir bei dem include eine Variable, damit du weißt, wie man Strings an, weitere Strings anhängen kann und dass du auch dynamische Includes gestalten kannst. Und zwar wollen wir ja auf jeder Seite mal sagen, wo befinden wir uns gerade, was ist denn, also auf welcher Seite sind wir gerade, das müssen wir irgendwie definieren. Das heißt, wir können hier eine neue Variable erstellen, die heißt dann currentPage und die nennen wir mal about.
Diese Variable, die kann ich ja zum Beispiel auch hier direkt halt übergeben an die Navigation. Und wir können diese CurrentPage auch für den Content benutzen. Und zwar in der Layout.php kann ich nämlich folgendes sagen. Ich setze mir also den Dateinamen mit der Variable zusammen, also slash Content.
Und dann kommt dann die CurrentPage dazu, dann Punkt.php. Und dann habe ich den kompletten Dateinamen und dann kann ich den dann eben einbinden. Und das Ganze kann ich nämlich, das was ich auf Contact. Quatsch auf der About gemacht habe, das kann ich jetzt übertragen auf die anderen Seiten auch.
Und so sehen jetzt unsere PHP-Dateien, die wir verlinken, jetzt noch kleiner aus. Und ich habe noch vergessen, die Functions.php zu inkluden im richtigen Ordner. Ich muss hier nochmal kurz Includes natürlich reinschreiben.
Moment. Die Layouts befinden sich natürlich auch in den Includes-Ordner. Aber du siehst hier schon, wie praktisch das ist mit dieser Fehlermeldung, dass die auch direkt angezeigt werden.
So, das nächste Problem ist, dass der Pfad nicht in Ordnung ist in der Layout. Der PHP soll nicht direkt innerhalb Includes nach Content suchen, sondern einen Ordner höher gehen natürlich. Hier so. So, und jetzt hast du diesen Aufbau. Okay, Kontakt funktioniert noch nicht.
Ich habe die Kontakt-PHP nicht abgespeichert, die war noch leer sozusagen für PHP, aber so. Auf jeden Fall kannst du dich jetzt durchklicken durch die einzelnen PHP-Dateien. Du hast das alles ein bisschen sauberer aufgeteilt. Du hast Funktionen benutzt, du hast Variablen benutzt, du hast Includes benutzt. Und das sind jetzt erstmal alles nur die Grundlagen.
Natürlich wird eine PHP-Seite heutzutage nicht so aufgebaut, sondern wesentlich komplexer, aber für den Anfang hast du hiermit schon mal eine kleine Basis, womit du schon mal üben und experimentieren kannst und deine eigenen Funktionen in deine Webseite einbauen kannst und deinen eigenen Inhalt eben verwalten kannst. Ich hoffe, das genügt dir erstmal als Einstieg in die Programmiersprache PHP und das war ja erstmal nur ein kleiner Beispiel. Und wenn du ein komplexeres Beispiel sehen möchtest, nur mit reinen Funktionen und Variablen und Includes, ich habe dazu eine komplette Playlist erstellt, die habe ich mal hier oben verlinkt. Da habe ich einen Online-Shop erstellt, aber noch nicht fertiggestellt. Werde ich auch nicht fertigstellen, aber ich habe damit schon mal angefangen, um dir zu zeigen, dass du auch damit komplexere Projekte auch schon umsetzen kannst.
Ich hoffe, das Video hat dir gefallen. Über ein Like und einen Daumen nach oben würde ich mich riesig freuen. und natürlich ein Kommentar würde dann dem Ganzen...
YouTube Algorithmus weiterhelfen. Ja, vielen Dank fürs Zuschauen und wir sehen uns dann beim nächsten Video. Bis dahin. Tschüss!