Skip to content

Kapitel 20: Lernressourcen und Interviewfragen#

20.1 Offizielle PHP-Dokumentation#

Offizielle PHP-Dokumentation (php.net/manual/de_de)#

  • URL: https://www.php.net/manual/de_de/
  • Beschreibung: Die absolut beste und vollständigste Ressource für PHP. Enthält Referenzen für alle Funktionen, Klassen, Erweiterungen, sowie Tutorials und Beispiele.
  • Warum sie großartig ist:
    • ✅ Immer aktuell (neuste PHP-Versionen)
    • ✅ Detaillierte Beschreibungen und Parameter
    • ✅ Benutzerbeiträge (Kommentare) mit praktischen Beispielen
    • ✅ Suche funktioniert hervorragend

Wichtige Teile der Dokumentation#

  1. Getting Started (Erste Schritte): https://www.php.net/manual/de_de/getting-started.php
  2. Language Reference (Sprachreferenz): https://www.php.net/manual/de_de/langref.php
  3. Funktionen-Referenz: https://www.php.net/manual/de_de/functions.php
  4. FAQ (Häufig gestellte Fragen): https://www.php.net/manual/de_de/faq.php

20.2 Tutorials für Anfänger#

Gute, kostenlose PHP-Tutorials (Deutsch)#

RessourceURLBeschreibung
PHP.de (Deutsche PHP-Community)https://www.php.de/Forum, Tutorials, News
PHP-Einfach.dehttps://www.php-einfach.de/Sehr gut für absolute Anfänger
YouTube-Tutorials (Deutsch)Suche nach "PHP Tutorial Deutsch"Video-Tutorials

Gute, kostenlose PHP-Tutorials (Englisch - empfohlen!)#

RessourceURLBeschreibung
PHP.net Tutorialshttps://www.php.net/manual/en/tutorials.phpOffizielle Tutorials
W3Schools PHPhttps://www.w3schools.com/php/Interaktiv, einfach
MDN Web Docs (PHP)https://developer.mozilla.org/en-US/docs/Learn/Server-side/PHPGute Übersicht
Laracasts (PHP Kurse)https://laracasts.com/Sehr hochwertig (Englisch)

20.3 Open-Source-Projekte (zum Lernen und Mitmachen)#

Beliebte PHP Open-Source-Projekte#

ProjektBeschreibungURL
WordPressDas weltweit beliebteste CMS (Content Management System). Lernen Sie, wie riesige PHP-Projekte strukturiert sind.https://wordpress.org/
LaravelModernes PHP-Framework (MVC-Architektur). Lernen Sie fortgeschrittene PHP-Konzepte.https://laravel.com/
SymfonyWiederum ein sehr bekanntes PHP-Framework (komponentenbasiert).https://symfony.com/
PHPMailerDie beliebteste Bibliothek für E-Mail-Versand in PHP.https://github.com/PHPMailer/PHPMailer/
GuzzleHTTP-Client für PHP.https://github.com/guzzle/guzzle
MonologLogging-Bibliothek für PHP.https://github.com/Seldaek/monolog

Wie man zu Open-Source beitragt (für Anfänger)#

  1. Ein Projekt auf GitHub finden, das Sie interessiert
  2. "Issues" (Probleme) anschauen (suchen Sie nach "good first issue" oder "help wanted")
  3. Code lesen (versuchen Sie zu verstehen, wie es funktioniert)
  4. Eigenen Fork erstellen (eine Kopie des Projekts in Ihrem GitHub-Account)
  5. Änderungen vornehmen (einen Fehler beheben, eine Funktion verbessern)
  6. "Pull Request" (PR) erstellen (Ihre Änderungen dem ursprünglichen Projekt vorschlagen)
  7. Feedback erhalten und verbessern

20.4 Häufige PHP-Interviewfragen (Grundlagen, Datenbank, Sicherheit)#

Grundlagen#

Frage 1: Was ist der Unterschied zwischen == und === in PHP?

  • Antwort: == prüft nur auf Wertgleich (nach Typumwandlung), === prüft auf Wert und Typengleichheit (strenge Gleichheit).
    php
    $a = 5;
    $b = "5";
    
    var_dump($a == $b);   // true (Wert gleich)
    var_dump($a === $b);  // false (Typ unterschiedlich: integer vs. string)

Frage 2: Was ist der Unterschied zwischen include und require?

  • Antwort: Beide fügen Datei-Inhalt ein. Aber: include gibt eine Warnung aus, wenn die Datei nicht gefunden wird (Skript läuft weiter). require gibt einen fatalen Fehler aus und stoppt das Skript.
    php
    include 'nicht_existierende_datei.php';  // Warnung, Skript läuft weiter
    require 'nicht_existierende_datei.php'; // Fataler Fehler, Skript stoppt

Frage 3: Was ist der Unterschied zwischen GET und POST?

  • Antwort:
    MerkmalGETPOST
    DatenübertragungURL-ParameternHTTP-Body (versteckt)
    SicherheitNiedrig (sichtbar in URL)Höher (nicht in URL)
    DatenmengeBegrenzt (URL-Länge)Unbegrenzt
    BookmarkbarJaNein
    AnwendungSuche, FilterungLogin, Registrierung

Frage 4: Was sind Superglobals? Nennen Sie 3 Beispiele.

  • Antwort: Superglobals sind spezielle PHP-Variablen, die in allen Bereichen des Skripts verfügbar sind (global). Beispiele: $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER, $_FILES.

Datenbank (MySQL)#

Frage 5: Was ist SQL-Injection und wie verhindert man es?

  • Antwort: SQL-Injection ist eine Sicherheitslücke, bei der Angreifer bösartigen SQL-Code einschleusen. Verhindern: Immer Prepared Statements verwenden!
    php
    // GEFÄHRLICH!
    $sql = "SELECT * FROM benutzer WHERE name = '$name'";
    
    // SICHER!
    $sql = "SELECT * FROM benutzer WHERE name = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $name);

Frage 6: Was ist der Unterschied zwischen mysqli und PDO?

  • Antwort:
    MerkmalmysqliPDO
    DatenbanksystemNur MySQLMehrere (MySQL, PostgreSQL, SQLite, etc.)
    Prepared StatementsJaJa
    ObjektorientiertJaJa
    FehlerbehandlungEtwas schwierigerBesser (Ausnahmen)
    EmpfehlungFür MySQL-spezifische ProjekteFür datenbankunabhängige Projekte

Sicherheit#

Frage 7: Was ist XSS (Cross-Site Scripting) und wie verhindert man es?

  • Antwort: XSS ist eine Sicherheitslücke, bei der Angreifer bösartigen JavaScript-Code einschleusen. Verhindern: Immer htmlspecialchars() oder htmlentities() bei der Ausgabe von Benutzereingaben verwenden!
    php
    // GEFÄHRLICH!
    echo $_GET['name'];
    
    // SICHER!
    echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');

Frage 8: Wie speichert man Passwörter sicher in der Datenbank?

  • Antwort: Niemals Klartextpasswörter speichern! Immer Passwort-Hashing verwenden (mit password_hash()). Und zum Überprüfen password_verify() verwenden.
    php
    // Passwort hashen (beim Registrieren)
    $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
    
    // Passwort überprüfen (beim Login)
    if (password_verify($passwort, $passwort_hash_aus_datenbank)) {
        // Passwort korrekt
    }

Frage 9: Was sind Sessions und Cookies? Was ist der Unterschied?

  • Antwort:
    • Cookie: Kleine Textdatei, die auf dem Computer des Benutzers gespeichert wird (clientseitig).
    • Session: Daten, die serverseitig gespeichert werden (z.B. in Dateien oder Datenbank). Die Session-ID wird meist in einem Session-Cookie beim Benutzer gespeichert.
    • Unterschied: Cookies sind clientseitig (Kann vom Benutzer manipuliert/gesehen werden). Sessions sind serverseitig (sicherer).

Fortgeschritten#

Frage 10: Was ist Autoloading in PHP? (PSR-4)

  • Antwort: Autoloading ist ein Mechanismus, der Klassen automatisch lädt, wenn sie zum ersten Mal verwendet werden (ohne include/require). PSR-4 ist der Standard für Autoloading (Namensräume und Dateipfade zuordnen).
    php
    // composer.json (vereinfacht)
    {
        "autoload": {
            "psr-4": {
                "MeinApp\\": "src/"
            }
        }
    }
    
    // Dann in PHP:
    use MeinApp\Controllers\MeinController;
    $controller = new MeinController();  // Wird automatisch geladen!

Zusammenfassung#

In diesem Kapitel haben Sie:

  • ✅ Offizielle PHP-Dokumentation und andere Lernressourcen kennengelernt
  • ✅ Tutorials für Anfänger (Deutsch und Englisch) gefunden
  • ✅ Open-Source-Projekte zum Lernen und Mitmachen kennengelernt
  • ✅ Häufige PHP-Interviewfragen (Grundlagen, Datenbank, Sicherheit) geübt

Glückwunsch! Sie haben den PHP-Anfängerkurs abgeschlossen! 🎉


Nächste Schritte (für weitere Lernen):

  1. Bauen Sie eigene Projekte! (das ist die beste Art zu lernen)
  2. Lernen Sie ein PHP-Framework (Laravel oder Symfony werden empfohlen)
  3. Lernen Sie fortgeschrittene Konzepte: Objektorientierte Programmierung (OOP) in PHP, Namespaces, Traits, Interfaces, Abstrakte Klassen.
  4. Lernen Sie über Web-Sicherheit (OWASP Top 10).
  5. Tragen Sie zu Open-Source bei!

Viel Erfolg auf Ihrer PHP-Lernreise! 🚀

Frei für alle Anfänger