Appearance
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#
- Getting Started (Erste Schritte): https://www.php.net/manual/de_de/getting-started.php
- Language Reference (Sprachreferenz): https://www.php.net/manual/de_de/langref.php
- Funktionen-Referenz: https://www.php.net/manual/de_de/functions.php
- 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)#
| Ressource | URL | Beschreibung |
|---|---|---|
| PHP.de (Deutsche PHP-Community) | https://www.php.de/ | Forum, Tutorials, News |
| PHP-Einfach.de | https://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!)#
| Ressource | URL | Beschreibung |
|---|---|---|
| PHP.net Tutorials | https://www.php.net/manual/en/tutorials.php | Offizielle Tutorials |
| W3Schools PHP | https://www.w3schools.com/php/ | Interaktiv, einfach |
| MDN Web Docs (PHP) | https://developer.mozilla.org/en-US/docs/Learn/Server-side/PHP | Gute Übersicht |
| Laracasts (PHP Kurse) | https://laracasts.com/ | Sehr hochwertig (Englisch) |
20.3 Open-Source-Projekte (zum Lernen und Mitmachen)#
Beliebte PHP Open-Source-Projekte#
| Projekt | Beschreibung | URL |
|---|---|---|
| WordPress | Das weltweit beliebteste CMS (Content Management System). Lernen Sie, wie riesige PHP-Projekte strukturiert sind. | https://wordpress.org/ |
| Laravel | Modernes PHP-Framework (MVC-Architektur). Lernen Sie fortgeschrittene PHP-Konzepte. | https://laravel.com/ |
| Symfony | Wiederum ein sehr bekanntes PHP-Framework (komponentenbasiert). | https://symfony.com/ |
| PHPMailer | Die beliebteste Bibliothek für E-Mail-Versand in PHP. | https://github.com/PHPMailer/PHPMailer/ |
| Guzzle | HTTP-Client für PHP. | https://github.com/guzzle/guzzle |
| Monolog | Logging-Bibliothek für PHP. | https://github.com/Seldaek/monolog |
Wie man zu Open-Source beitragt (für Anfänger)#
- Ein Projekt auf GitHub finden, das Sie interessiert
- "Issues" (Probleme) anschauen (suchen Sie nach "good first issue" oder "help wanted")
- Code lesen (versuchen Sie zu verstehen, wie es funktioniert)
- Eigenen Fork erstellen (eine Kopie des Projekts in Ihrem GitHub-Account)
- Änderungen vornehmen (einen Fehler beheben, eine Funktion verbessern)
- "Pull Request" (PR) erstellen (Ihre Änderungen dem ursprünglichen Projekt vorschlagen)
- 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:
includegibt eine Warnung aus, wenn die Datei nicht gefunden wird (Skript läuft weiter).requiregibt einen fatalen Fehler aus und stoppt das Skript.phpinclude '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:
Merkmal GET POST Datenübertragung URL-Parametern HTTP-Body (versteckt) Sicherheit Niedrig (sichtbar in URL) Höher (nicht in URL) Datenmenge Begrenzt (URL-Länge) Unbegrenzt Bookmarkbar Ja Nein Anwendung Suche, Filterung Login, 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:
Merkmal mysqli PDO Datenbanksystem Nur MySQL Mehrere (MySQL, PostgreSQL, SQLite, etc.) Prepared Statements Ja Ja Objektorientiert Ja Ja Fehlerbehandlung Etwas schwieriger Besser (Ausnahmen) Empfehlung Für MySQL-spezifische Projekte Fü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()oderhtmlentities()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üfenpassword_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):
- Bauen Sie eigene Projekte! (das ist die beste Art zu lernen)
- Lernen Sie ein PHP-Framework (Laravel oder Symfony werden empfohlen)
- Lernen Sie fortgeschrittene Konzepte: Objektorientierte Programmierung (OOP) in PHP, Namespaces, Traits, Interfaces, Abstrakte Klassen.
- Lernen Sie über Web-Sicherheit (OWASP Top 10).
- Tragen Sie zu Open-Source bei!
Viel Erfolg auf Ihrer PHP-Lernreise! 🚀
