~/blog/2010/03/php-6-ist-tot.md

PHP 6 ist tot – was heißt das für PHP-Entwickler?

2 min
Titelbild: PHP 6 ist tot – was heißt das für PHP-Entwickler?

Keine Zeit? Hier die Kurzversion in 30 Sekunden.

  • Die Arbeit am Unicode-Zweig „PHP 6“ wurde im März 2010 eingestellt.
  • Fertige Features wandern in den Trunk und damit in die nächste 5.x-Version.
  • Für Unicode bleibt es vorerst bei den mbstring-Funktionen und sauber gesetztem UTF-8.
  • Bücher und Artikel zu „PHP 6“ waren leider voreilig.

Diese Woche kam die Nachricht, mit der viele schon länger gerechnet haben: PHP 6 in der bisher geplanten Form wird es nicht geben. Die Entwickler haben die Arbeit an dem Zweig eingestellt, der PHP komplett auf Unicode umstellen sollte. Was bleibt, soll in den Trunk übernommen werden, aus dem dann die nächste Version entsteht, wahrscheinlich als 5.4.

Was war die Idee?

PHP 6 sollte Strings intern als Unicode (UTF-16) behandeln. Dann wäre strlen("Müller") immer 6, egal wie der Text kodiert ist, und man bräuchte keine Sonderfunktionen mehr. Klingt super, hat sich aber als extrem aufwendig herausgestellt: Fast jede Erweiterung hätte angepasst werden müssen, und nur wenige hatten Lust und Zeit dazu. Darum ist das Projekt über die Jahre immer weiter ins Stocken geraten.

Und jetzt?

Für uns ändert sich erst mal wenig, denn PHP 6 hat ja nie jemand produktiv eingesetzt. Der Alltag bleibt wie bisher:

  • mbstring weiter nutzen, wenn mit Umlauten gerechnet oder gekürzt wird.
  • Dateien, Datenbankverbindung und Ausgabe konsequent auf UTF-8 stellen.
  • Die Funktionen mit Zeichensatz-Parameter auch wirklich mit diesem Parameter aufrufen.
<?php
header('Content-Type: text/html; charset=UTF-8');

$text = 'Größe';
echo strlen($text);                    // 6, zählt Bytes
echo mb_strlen($text, 'UTF-8');        // 5, zählt Zeichen
echo htmlspecialchars($text, ENT_QUOTES, 'UTF-8');

Das strlen zählt Bytes, mb_strlen Zeichen. Und bei htmlspecialchars lohnt es sich, den Zeichensatz immer anzugeben (wie ich es auch im Artikel zu XSS schon beschrieben hatte). Wer die mbstring-Erweiterung nicht aktiv hat, sollte beim Hoster nachfragen.

Was heißt das für neue Projekte?

Entwickelt einfach auf PHP 5.2 oder 5.3 weiter und wartet nicht auf eine neue Hauptversion. Wer ohnehin gerade umstellt, kann gleich auf 5.3 gehen, weil dort Namespaces und Closures dabei sind. Und falls ihr irgendwo in Skripten noch magic_quotes voraussetzt: Das wäre ein guter Anlass, das aufzuräumen, denn die Funktion gilt als veraltet.

Die Bücher

Es gab bereits Bücher mit „PHP 6“ im Titel. Die waren offensichtlich voreilig. Ein Großteil des Inhalts passt trotzdem auf PHP 5.3, denn vieles von dem, was für 6 angekündigt war, ist längst da: Namespaces und Closures zum Beispiel. Aber wenn dort Unicode-Strings als Neuheit gefeiert werden, kann man das einfach überspringen.

Meine Meinung

Schade um die Idee, aber ehrlich gesagt bin ich nicht unglücklich. Lieber kleine, regelmäßige Schritte in 5.x als ein riesiger Umbruch, der alle Skripte bricht. Und wer heute sauber mit UTF-8 arbeitet, hat das Problem für sich weitgehend gelöst.

Wie seht ihr das? Hattet ihr auf PHP 6 gewartet? Schreibt mir gern einen Kommentar!

Beitragsbild: eigene Collage mit Logos von Wikimedia Commons (PHP logo: Colin Viebrock, gemeinfrei); die Marken gehören ihren Inhabern.

$ whoami
Christian Ackermann

Softwareentwickler (C++, C, Java, C#) aus der Oberpfalz, bloggt seit 2001 über Linux, Technik und Kochen.