Zum Inhalt springen
PHP Anfรคnger 20 min

Dein erstes PHP-Programm

PHP-Dateien aufbauen, CLI vs. Web, die wichtigsten Ausgabe-Konstrukte und wie du modernes PHP mit strict_types schreibst.

Aktualisiert:
Inhaltsverzeichnis

Dein erstes PHP-Programm

Schauen wir uns ein PHP-Programm genau an - auf der Kommandozeile und als Webseite.

Die minimale PHP-Datei

<?php

declare(strict_types=1);

echo "Hallo, PHP!\n";

<?php

Jede PHP-Datei beginnt mit <?php. Alles davor (oder ausserhalb) ist normales HTML. Das schliessende Tag ?> wirst du in reinen PHP-Dateien weglassen - das verhindert versehentliche Leerzeichen am Dateiende.

declare(strict_types=1);

Aktiviert strikte Typpruefung fuer die Datei. Das solltest du in jeder modernen PHP-Datei als Erstes haben:

function addieren(int $a, int $b): int { return $a + $b; }

addieren(1, '2');  // Ohne strict_types: konvertiert '2' zu 2 und liefert 3
                   // Mit strict_types: TypeError

echo

Gibt einen Wert auf der Ausgabe aus. Kein Zeilenumbruch - den haengst du mit \n an.

PHP auf der Kommandozeile

php hallo.php

Das funktioniert wie Python / Node - PHP laeuft einfach das Script.

PHP im Web

Wenn du php -S localhost:8000 laufen laesst und eine index.php hast, kannst du PHP auch im Browser aufrufen. PHP mischt nahtlos HTML und Code:

<?php

$name = 'Anna';
$aktiv = true;
?>

<!doctype html>
<html lang="de">
<head><title>Hallo</title></head>
<body>
    <h1>Hallo, <?= $name ?>!</h1>

    <?php if ($aktiv): ?>
        <p class="status">Account ist aktiv.</p>
    <?php else: ?>
        <p class="status">Account ist inaktiv.</p>
    <?php endif; ?>
</body>
</html>

Verkuerzte Syntax

  • <?= $wert ?> ist die Kurzform fuer <?php echo $wert; ?>
  • Fuer Templating nutzt man oft die alternative Syntax: if (...):, endif;, foreach (...):, endforeach;
  • In Frameworks wie Laravel gibt es eigene Template-Sprachen (Blade), aber โ€œrohes PHPโ€ reicht fuer kleine Seiten

Einfache Variablen

<?php

declare(strict_types=1);

$name = 'Anna';
$alter = 28;
$aktiv = true;
$pi = 3.14;

echo "Name: {$name}\n";
echo "Alter: {$alter}\n";
echo "Aktiv: " . ($aktiv ? 'ja' : 'nein') . "\n";
echo "Pi: {$pi}\n";
  • $variable - Variablen beginnen mit einem Dollar-Zeichen
  • Strings in doppelten Anfuehrungszeichen erlauben Variable Interpolation: "Hallo, {$name}!"
  • Strings in einfachen Anfuehrungszeichen sind โ€œwortwoertlichโ€: 'Hallo, {$name}!' wird nicht interpretiert

Nutzereingabe

CLI

<?php

echo "Wie heisst du? ";
$name = trim(fgets(STDIN));
echo "Hallo, {$name}!\n";

Web (aus einem Formular)

<form method="POST">
    <input name="nickname">
    <button>Absenden</button>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['nickname'] ?? '');
    echo "Hallo, " . htmlspecialchars($name);
}

Wichtig: Nutzer-Input immer mit htmlspecialchars escapen, bevor du ihn ausgibst - sonst riskierst du XSS.

Einfache Funktionen

<?php

declare(strict_types=1);

function addieren(int $a, int $b): int
{
    return $a + $b;
}

function gruessen(string $name = 'Welt'): string
{
    return "Hallo, {$name}!";
}

echo addieren(3, 4) . "\n";      // 7
echo gruessen() . "\n";           // Hallo, Welt!
echo gruessen('Anna') . "\n";     // Hallo, Anna!

Ein kleines Beispielprogramm

<?php

declare(strict_types=1);

$namen = ['Max', 'Anna', 'Leo'];

foreach ($namen as $name) {
    if (strlen($name) > 3) {
        echo "Hallo, {$name}!\n";
    }
}

// Funktionaler Stil
$lang = array_filter($namen, fn(string $n) => strlen($n) > 3);
$oben = array_map('strtoupper', $lang);
echo implode(', ', $oben) . "\n";

Was ist neu?

  • foreach ($array as $item) fuer einfache Iteration
  • array_filter mit einer Arrow Function fn() => ...
  • array_map('strtoupper', ...) uebergibt den Funktionsnamen als String
  • implode(', ', $array) verbindet Array-Elemente zu einem String

Fehler und var_dump

Ein wichtiges Debug-Werkzeug:

<?php

$person = ['name' => 'Anna', 'alter' => 28];
var_dump($person);
/* gibt aus:
array(2) {
  ["name"]=> string(4) "Anna"
  ["alter"]=> int(28)
}
*/

print_r ist eine lesbarere Variante:

print_r($person);
/* gibt aus:
Array
(
    [name] => Anna
    [alter] => 28
)
*/

Kommentare

<?php

// Einzeilig
# Auch einzeilig (unueblich)

/*
 Mehrzeilig
 */

/**
 * PHPDoc - wichtig fuer IDE-Support und Dokumentation
 *
 * @param string $name Der Name
 * @return string Der Gruss
 */
function gruessen(string $name): string { /* ... */ }

PHPDoc-Kommentare werden von IDEs genutzt, um dir Typ-Informationen anzuzeigen.

Zusammenfassung

  • <?php am Dateianfang, declare(strict_types=1); als zweite Zeile
  • echo und <?= ?> fuer Ausgabe
  • PHP mischt HTML und Code - perfekt fuer kleine Seiten
  • Variablen beginnen mit $, Interpolation nur in "..."-Strings
  • foreach, array_filter, array_map sind der PHP-Alltag
  • Nutzer-Input immer mit htmlspecialchars escapen!

Im naechsten Kapitel: Variablen und Datentypen im Detail.

Zurรผck zum PHP Kurs