2 Grundlagen

2.1 PHP-Geschichte und Entwicklung

PHP (rekursives Akronym für “PHP: Hypertext Preprocessor”) gehört zu den wichtigsten Sprachen der Webentwicklung. Seine Entwicklung begann als einfaches Werkzeug und mündete in eine ausgereifte, vielseitige Programmiersprache, die heute das Fundament eines großen Teils des Webs bildet.

2.1.1 Die Anfänge: Personal Home Page Tools

1994 schrieb Rasmus Lerdorf eine Sammlung von Perl-Skripten, um Besucher seiner persönlichen Homepage zu tracken. Diese Sammlung nannte er “Personal Home Page Tools” (PHP Tools). Da die Nachfrage nach seinen Tools stieg, schrieb Lerdorf seine Tools in C um, um Performance zu verbessern und erweiterte sie um Datenbankfunktionalitäten:

<?
// Früher PHP-Code von ca. 1995
$name = $HTTP_GET_VARS["name"];
echo "Hallo $name!";
?>

2.1.2 PHP/FI und PHP 3: Der Weg zur Programmiersprache

1997 entwickelten Zeev Suraski und Andi Gutmans den PHP-Parser komplett neu, da sie mit der Vorversion für ein Universitätsprojekt arbeiteten. Diese Neuentwicklung wurde als PHP 3 veröffentlicht und markiert einen Meilenstein in der Geschichte von PHP. Die Sprache bekam damit erstmals eine vollständige Programmiersprachen-Syntax und bessere Erweiterbarkeit.

2.1.3 PHP 4: Das Zend Engine Zeitalter

Im Jahr 2000 erschien PHP 4, das auf der neu entwickelten Zend Engine basierte. Die Zend Engine führte wichtige Konzepte ein:

<?php
// PHP 4 Objektorientierter Code (rudimentär)
class Benutzer {
    var $name;
    
    function setName($name) {
        $this->name = $name;
    }
    
    function getName() {
        return $this->name;
    }
}

$benutzer = new Benutzer();
$benutzer->setName("Max Mustermann");
echo $benutzer->getName();
?>

2.1.4 PHP 5: Vollständige Objektorientierung

Mit PHP 5 (2004) wurde die Objektorientierung substanziell verbessert. Die Zend Engine II brachte:

<?php
// PHP 5 objektorientierter Code
class Benutzer {
    private $name;
    
    public function __construct($name = '') {
        $this->name = $name;
    }
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function getName() {
        return $this->name;
    }
}

try {
    $benutzer = new Benutzer("Max Mustermann");
    echo $benutzer->getName();
} catch (Exception $e) {
    echo "Ein Fehler ist aufgetreten: " . $e->getMessage();
}
?>

2.1.5 PHP 7: Performance-Revolution

2015 brachte PHP 7 einen Quantensprung in Sachen Performance:

<?php
// PHP 7 Code mit Typdeklarationen
declare(strict_types=1);

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

// Null Coalescing Operator
$username = $_GET['user'] ?? 'Gast';

// Spaceship Operator
$vergleich = 5 <=> 10; // -1, weil 5 < 10
?>

2.1.6 PHP 8: Innovation und Modernisierung

Die PHP 8 Serie (ab 2020) brachte zahlreiche Neuerungen, die PHP zu einer modernen Sprache machten:

2.1.6.1 PHP 8.0 (2020):

2.1.6.2 PHP 8.1 (2021):

2.1.6.3 PHP 8.2 (2022):

2.1.6.4 PHP 8.3 (2023):

<?php
// PHP 8 Features
class Benutzer {
    // Constructor Property Promotion
    public function __construct(
        private string $name,
        private ?string $email = null,  // Nullable Type
        private readonly int $id = 0    // Readonly Property
    ) {}
    
    // Named arguments können so aufgerufen werden:
    // new Benutzer(name: "Max", email: "max@example.com");
    
    // Return type mit Union Type
    public function getNameOrId(): string|int {
        return $this->name ?: $this->id;
    }
    
    // Match expression
    public function getRolle(int $level): string {
        return match($level) {
            1 => "Benutzer",
            2 => "Moderator",
            3, 4 => "Administrator",
            default => "Gast"
        };
    }
}

// Nullsafe Operator
$nameLength = $user?->getName()?->length;

// Enum (PHP 8.1)
enum Status: string {
    case AKTIV = 'aktiv';
    case INAKTIV = 'inaktiv';
    case GESPERRT = 'gesperrt';
}
?>

2.1.7 Der Einfluss der PHP-FIG

Eine wichtige Entwicklung für das PHP-Ökosystem war die Gründung der PHP Framework Interop Group (PHP-FIG) im Jahr 2009. Die Gruppe hat eine Reihe von PHP Standard Recommendations (PSRs) veröffentlicht, die zur Standardisierung von Codeformaten, Autoloading und Interfaces beigetragen haben.

2.1.8 PHP heute

PHP war und ist weiterhin eine der dominierenden Serverseitigen Sprachen im Web: - Über 75% aller Websites mit bekanntem Serversystem verwenden PHP - Die meisten großen Content-Management-Systeme (WordPress, Drupal, Joomla, Typo3) basieren auf PHP - Moderne Frameworks wie Laravel, Symfony und Laminas machen PHP zu einer soliden Wahl für professionelle Webentwicklung

Durch die starke Entwicklung in den letzten Jahren hat PHP viele der Vorurteile, mit denen die Sprache früher zu kämpfen hatte, hinter sich gelassen und sich zu einer modernen, leistungsfähigen Programmiersprache entwickelt.

In den folgenden Kapiteln werden wir uns mit der Installation und Konfiguration von PHP beschäftigen und einen tieferen Einblick in die Syntax und die Sprachkonstrukte geben, die PHP zu einer der flexibelsten Programmiersprachen für die Webentwicklung machen.