PHP-Crashkurs

Veröffentlicht am

Vorwort

Nachdem im Internet ziemlich viel komische Tutorials und schlechte YouTube-Videos kursieren und es viele PHP-Entwickler gibt, die schlecht entwickeln, hab ich mich entschieden einfach mal nen kleinen Crashkurs zu schreiben. Ziel ist es, nach diesem kleinen Crashkurs eine Ahnung zu haben wie PHP funktioniert und damit sauber arbeiten zu können. Zudem weißt du danach welchen Quellen du vertrauen solltest und welchen eher nicht. Hierzu werde ich aber nochmal irgendwann einen seperaten Post verfassen und dann hier verlinken.
Bei dem Crashkurs hier gehe ich davon aus, das du einen PC bedienen kannst und der englischen Sprache mächtig bist. Ein halbwegs solides Verständnis für PCs ist auch von Vorteil.

Geschichsstunde

Zuerst einmal etwas Historisches. Nein, ich fange jetzt nicht wieder bei Lochkarten an. PHP wurde 1995 von Rasmus Lerdorf geschaffen. Ursprünglich war es ein Set von Perl-Scripts für die Erfassung von Zugriffen auf Webauftritte. Mit der Zeit war es ein riesiger Haufen von Skripts. Also hat er alles in C umgeschrieben um mit Datenbanken zu interagieren usw. Diesen Code stellte er dann frei zur Verfügung (heute würde man sagen Open Source).
1997 gabs dann nochmal ne kleine Überarbeitung allerdings immer noch ein One-Man-Project. Im Laufe der Zeit wurde das ganze dann vom One-Man-Project zum Community-Projekt. PHP war hierbei nicht wirklich der schnellste seiner Art. Mit den verschiedenen Versionen ergaben sich dann aber Performanceverbesserungen vom Vielfachen der Vorgängerversion. So das es heute durchaus mit anderen Sprachen wie Java und .NET konkurrieren kann. Wer sich das ganze nochmal im Detail reinpfeifen will, hier ist der offfizielle Geschichtsverlauf von PHP. Die Geschichtszusammenfassung erhebt hierbei bei mir keinen Anspruch auf vollständige Richtigkeit und Vollständigkeit.

Allgemeine Grundlagen

So genug zur Geschichte, welche die meisten wahrscheinlich eh geskippt haben. Und etwas Allgemeines, dass bitte nicht skippen.
PHP ist eine interpretierte Sprache. Das heißt dass das Skript (Datei die Code enthält) von einem Programm (dem Interpreter) zeilenweise abgearbeitet wird. Das heißt aber auch das evtl. Syntax-Fehler o. ä. erst zur Laufzeit des Skript erkannt werden können. Natürlich kann man hier mit diversen Tools (z. B. PHPStorm (kostenpflichtig) oder Netbeans (kostenlos)).
Aber dazu später mehr. Wie vielleicht so manchem schlauen Kopf aufgefallen ist, bedeutet die zeilenweise Abarbeitung natürlich auch einen höheren Aufwand bei jeder Ausführung. Das sollte man bei Skripts nie vergessen.
PHP arbeitet im Gegensatz zu manchen anderen Sprache ohne Typen, das heißt das erst zur Laufzeit feststeht ob es sich bei einem Wert um eine Zahl, Text oder etwas Anderes handelt. Das kann bei falschem Verständnis schnell zu anscheinend komplett unlogischen Fehlern führen.

PHP-Scripts ausführen

Um PHP-Skripts auszuführen benötigen wir diesen Interpreter. Die meisten 0815-Hoster haben schon einen lauffähigen PHP-Interpreter beim sogenannten Webspace dabei. Webspace ist hierbei die Bereitstellung von Speicherplatz und dem PHP-Interpreter sowie einem Webserver, der die PHP-Skripte durch den PHP-Interpreter ausführen lässt, und die Ausgabe zurückgibt. Hierbei ist zu beachten das jeder im Internet auf diesen Webspace zugreifen kann. Bitte also aufpassen was man da so veröffentlicht! Und bitte stets auf Sicherheit achten, sonst kann das Böse ausgehen.
Die andere Möglichkeit besteht darin sich PHP lokal zu installieren. Hierfür gibt es XAMPP, ein Bundle mit allen Programmen die man für die Entwicklung so benötigt. Für die Installation verweise ich hierfür gerne auf Chip.de.
So das Allgemeine Gerödel haben wir jetzt auch geschafft. Im Idealfall hast du jetzt einen XAMPP-Server auf deinem PC laufen. Das ganze ist praktisch, weil du gleich ausprobieren kannst, was ich hier so zeige.

Sinnvolle Hilfe bekommen

Als wichtigster Anlaufpunkt für PHP-Entwickler ist die PHP-Dokumentation. Keine Angst, diese ist im Verhältnis zu anderen Dokumentationen leicht verständlich und mit ausreichenden Beispielen versehen. Diese findet ihr hier. Ansonsten gibt es die schöne Seite StackOverflow, eine Frage-Antwort-Plattform für Entwickler. Wie man es von anderen Plattformen kennt gibt es eine als "richtig" markierte Antwort. Glaubt aber bitte nicht alles was dort geantwortet wird.

Programmieren anfangen

Und nun zu den ersten praktischen Grundlagen. Als erstes machen wir ein Hello World, das erste Programm was jeder Entwickler in einer neu erlernten Sprache schreibt. Das ganze hat einfach Tradition.

    <?php 
        echo "Hello World";

Ergibt folgende Ausgabe:
Hello World

Was wir oberhalb sehen ist der klassiche Aufbau einer PHP-Datei. Sie beginnt immer mit einem <?php. Das zeigt dem PHP-Interpreter das er jetzt seine Arbeit beginnen darf, die tut er solange bis er das Ende der Datei erreicht oder ein ```?>`` auftaucht. Es kann auch mehrere solcher Blöcke geben wie im Beispiel unterhalb:

    <?php 
        // Gebe ich komme aus PHP aus
        echo "Ich komme aus PHP ";
    ?>
    Ich bin aber ein normaler Text.
    <?php
        /* 
        
            Gebe aus: Bist du dir sicher?
            
        */
        echo "Bist du dir sicher? ";
    ?>

Ergibt folgende Ausgabe:
Ich komme aus PHP Ich bin aber ein normaler Text. Bist du dir sicher?

Wie man erkennen kann schreibt man pro Zeile eine Anweisung. Diese wird dann mit einem Strichpunkt (Semikolon) abgeschlossen. Zusätzlich gibt es folgende Sprachelemente:

Kommentare

  • Beginnen mit // für einzeilige Kommentare
  • Mehrzeilige Kommentare beginenn mit /* und enden mit */
  • zur besseren Lesbarkeit werden hinter den Kommentarzeichen immer erst ein Leerzeichen angefügt um die Kommentare leichter lesbar zu machen

Schlüsselwörter

  • z. B. echo für Ausgabe von Text, das sind fest definierte Worte die bestimmte Aktionen auslösen
  • ganze Übersicht findet sich hier

Variablen

  • enthalten Werte z. B. Zahlen, Texte, Listen
  • Beginnen immer mit $ z. B. $meineTolleZahl

Strings (Texte)

  • Texte müssen in PHP in " oder ' stehen
  • In einfachen Hochkommas ignoriert der PHP jegliche Anweisungen (schneller)
  • In doppelten Hochkommas ist z. B. folgendes Möglich echo "Hallo $name"

und viele mehr. Die reichen uns aber für das was wir jetzt vorhaben. Ich würde dich aber an der Stelle bitten dich mit HTML vertraut zu machen, falls noch nicht geschehen. Das ist die "Sprache des Web", welche auch PHP als Text zurückgibt um mit der Außenwelt zu kommunizieren. Hierzu verweise ich auf das exzellente Tutorial von w3schools.

Kleines kompaktes Beispiel

Wir wollen eine dynamische Homepage gestalten. Hierbei machen wir uns eine Vorlage, die anhand der Variablen den entsprechenden Inhalt setzt. Folgende Realisierung:

    <?php
        // Titel der im Browser für die Homepage angezeigt werden soll
        $title = "Meine Homepage";
        
        // Liste mit Links für die Navigation
        $nav = [
            "Home" => "/homepage",
            "About" => "/about",
            "My furnance story" => "/furnance-story"
        ];
        
        // Autor der Seite
        $author = "Foo Bar";
        
        // HTML für den Body
        $body = '<h2>OMG!</h2>
                 <p>My first homepage is online!</p>
                 <p>Ok no one will see it, but f*ck it!</p>
        ';
     ?>  
     <!DOCTYPE html>
     <html>
         <head>
             <title><?php echo $title; ?></title>
         </head>
         <body>
             <nav>
                 <ul>
                 <?php
                     foreach($navLink as $display => $link) {
                         echo "<li><a href="$link">$display</a></li>";
                     }
                 ?>
                 </ul>
             </nav>
             <main>
                 <h1><?php echo $title; ?></h1>
                 <?php echo $body; ?>
             </main>
             <footer>
                 <p>Erstellt von <?php echo $author; ?></p>
             </footer>
         </body>
     </html>

Wie hier zu sehen ist, hab ich mehrmals PHP-Schnippsel in das HTML eingetragen. Bitte nicht alles was gleich bleibt mit echo ausgeben. Den alles was ihr mit echo ausgebt, muss zusätzlich verarbeitet werden. Die Variable $nav definiert eine Liste, in PHP auch Array gennant. Diese Listen besitzen immer einen Index und einen Wert. Folgende Möglichkeiten für solche Arrays gibt es:

z. B. unsere Variable $nav, ist ein sogenanntes assoziatives Array, das heißt der Index ist ein Text (string)

Index Wert
Home "/homepage"
About "/about"
My furnance story "/furnance-story"

Standardmäßig ist der Index eine laufende Nummer.
Als Beispiel hierfür der PHP-Code und die logische Darstellung dessen:

    <?php 
    
    $myArray = [
        "I bims 1 String",
        "Lol there can be german and english",
        "Und ich bin wieder auf deutsch?!"
    ];
Index Wert
0 "I bims 1 String"
1 "Lol there can be german and english"
2 "Und ich bin wieder auf deutsch?!"

Aber ACHTUNG 0 ist eine Zahl. Und somit beginnt man in der Programmierung auch immer mit 0 zu zählen.

Die andere interessante Stelle in unserer kleinen Homepage ist der foreach-lock. Hierbei ist es möglich für jedes Element in einem Array zu schleifen.
Genaue Erklärung hier.

Es gibt natürlich noch wesentlich mehr sog. Kontrollstrukturen Auf diese gehe ich jetzt aber nicht näher im Detail ein. Sie sind im PHP Manual zu finden.

Mit Benutzereingaben arbeiten

Bis jetzt haben wir nie mit Benutzerdaten gearbeitet. Das ist aber selten der Fall. Wir möchten zum Beispiel einen guten Freund beim Namen nennen. Dazu brauchen wir die Eingabe des Benutzers. Hierfür gibt es grundsätzlich zwei Möglichkeiten.

Möglichkeit 1: GET

Bei dieser Möglichkeit hängt man seiner URL im Browser einfach einen sogenannten Query-String an. Damit ist sie für den Benutzer und evtl. Dritte ohne Probleme änderbar und auslesbar! Also niemals für sensible Daten nutzen!!!
Mehr dazu bei Wikipedia

Möglichkeit 2: POST

Hierbei werden die Daten über die Anfrage an den Webserver, für den Benutzer nicht direkt sichtbar verschickt.
Mehr dazu bei form.guide

Tools für die Entwicklung

Viele entwicklen mit PHP im Texteditor. Gerade wenn man auf bereits bestehende Bibliotheken und Schnittstellen zugreifen muss, lohnt sich ein Blick auf eine sogenannten Entwicklungsumgebungen. Diese bieten neben sog. Syntax-Highlighting auch Autovervollständig für Keywords, Funktionen usw. Sie erkennen zudem Fehler im Aufbau des Programmes und helfen bei diversen Aktionen. Ich persönlich bevorzuge PHPStorm von JetBrains. Für Studenten gibt es das Tool auch kostenlos. Dazu einfach als Student/Schüler verifizieren. Für alle die weder Schüler noch Student sind können auch auf Netbeans zurückgreifen. Hiermit habe ich auch bereits gute Erfahrungen gemacht.

Objektorientierung (OOP) in PHP

Alles oben genannten ist die sogenannte imperative Programmierung. PHP ermöglicht aber auch die Objektorientierung. Diese ist sehr vielfältig und ermöglicht ganz neue Dinge in PHP. Ein Tutorial dazu findet sich auf php-einfach.de.

Fazit

Ich hoffe dieser Crashkurs und die weiterführenden Links konnten dir einen groben Einstieg in PHP ermöglichen. Sollten Links nicht funktionieren, bitte umgehend melden. Ich bin bei der Einführung nicht zu sehr ins Details gegangen und will nur sehr grundlegende Dinge erläutern. Die wirkliche Einarbeitung sollte jeder für sich selbst treffen. Hierbei gibt es zur Orientierung die Best Practices für PHP und wie bereits erwähnt das PHP Manual. Bitte verwendet immer aktuelle PHP-Versionen um Sicherheitslücken in alten Versionen zu vermeiden und informiert euch regelmäßig über Änderungen. Gerade als deprecated markierte Funktionen usw. sollten dringend gemieden werden! In dem Sinne viel Spaß und Erfolg.

Als langjähriger Hobby-PHP-Entwickler kann ich hier leider nicht alles abdecken und einen 100%-Praxis-Einblick bieten. Allerdings habe ich schon wirklich lange Erfahrungen gemacht und versuche diese weiterzugeben. Ich arbeite sehr gerne mit PHP und kann es auch nur jedem empfehlen. Auch wenn es sich PHP nicht für alle Use-Cases im Web eignet, gehört es in die Toolbox eines jeden Entwicklers.

Für Rückfragen und Feedback stehe ich natürlich gerne zur Verfügung.