PHP 5.4 – Viele Änderungen und neue Möglichkeiten

Kein Beitragsbild

Sven Schannak

ist ein leidenschaftlicher Web-Entrepreneur, freiberuflicher Web-Entwickler und stolzer Coding-Monkey.

Selten gab es so viele Kontroversen um eine neue Version von PHP. Dabei müssten schon auf den ersten Blick die meisten Entwickler mit der Version 5.4 durchaus zufrieden sein. Viele Altlasten wurden über Bord geworfen und potenzielle Sicherheitslücken geschlossen. Trotzdem, man mag das erstaunlich finden, hat dies kaum einen Einfluss auf die Lauffähigkeit bereits vorhandener Anwendungen.

PHP 5.4

Neu in PHP 5.4: Traits

PHP entwickelt sich merkbar in eine professionelle Richtung. Traits sorgen ab PHP 5.4 dafür, dass eine erweiterte Modularisierung und Kapselung bezüglich OOP ermöglicht wird. Traits bilden beispielhaft eine oder mehrere Methoden ab, die in verschiedenen Klassen verwendet werden können. Man sollte aber darauf achten, dass Methoden-Namen auch über mehrere Traits hinaus nicht den selben Namen verwenden sollten. Das Resultat wäre ein FATAL_ERROR (aber auch hier gibt es Möglichkeiten mittels insteadof). Für die Arbeit mit Traits wurde ebenfalls eine neue Magic Constant eingeführt. Mit __TRAIT__ kann der Name des Traits ausgegeben werden. Ein Trait ist wie folgt aufgebaut:

trait fruchtZubereiten {
  function schaelen();
  function schneiden();
}

class Steinfrucht extends Base {
  use fruchtZubereiten;
}

class Beere extends Base {
  use fruchtZubereiten;
}

$aprikose = new Steinfrucht();
$aprikose->schaelen();
$aprikose->schneiden();

$johannisbeere = new Beere();
$johannisbeere->schaelen();

Verschwinden, aber wohl weniger vermisst, werden globale Einstellungen wie der “safe_mode” oder die “magic_quotes”. Dies sollte für die meisten Anwendungen kein allzu schmerzlicher Verlust sein. In den Changelogs von PHP wird hier richtigerweise darauf verwiesen, dass Anwendungen, die deswegen unter PHP 5.4 nicht mehr lauffähig sind, schon vor dem Hintergrund der Anwendungssicherheit ohnehin eine Überarbeitung benötigen.

Short Syntax für Arrays in PHP 5.4

Viele Entwickler, die in PHP arbeiten, kommen zwangsläufig auch mit JavaScript in Kontakt. PHP hat dieser “Symbiose” Rechnung getragen und eine JavaScript-ähnliche “short array syntax” eingeführt. Arrays können nun vereinfacht erstellt werden mit folgender Anweisung:

$a = [1,2,3,4]

oder auch

$b = ['Banane' => 'Gelb', 'Kiwi' => 'Grün']

für mehrdimensionale Arrays.
Bei Methoden bzw. Funktionsaufrufen kann, falls ein Array zurückgegeben wird, direkt auf die Werte in diesem Array zugegriffen werden:

function gibWertInArray(){
  $a = [Eins,Zwei,Drei,Vier];
  return $a;
}
print gibWertInArray()[3]; // Vier

Weiterhin ist es nun immer möglich, die vorherige php.ini-Option “short_open_tag” zu nutzen, um beispielsweise Variablen innerhalb der HTML-Syntax schnell ausgeben zu können.

Kennst du unser E-Book-Bundle? Spare jetzt 6,99 €!

E-Book Bundle von Andreas Hecht

Closures unterstützen nun auch $this und Teile einer Klasse können direkt während der Instanzierung aufgerufen werden. Zum Beispiel kann direkt eine Methode wie folgt ausgeführt werden:

(new Frucht)->schaelen();

Zusätzlich wurden die Fehlermeldungen, Warnungen und Hinweise verbessert. So werden ab sofort alle Fehler angezeigt, auch E_STRICT-Meldungen. Das Standard-Charset ist ab 5.4 utf-8 und Zahlen können zusätzlich in der Binärform dargestellt werden:

0b[Binär]

Fortschritt bei Uploads und integrierter Webserver

Besonders erfreut war ich persönlich über die Möglichkeit, den Fortschritt bei Uploads abzubilden. Damit kann zum Beispiel mit Hilfe von Ajax der aktuelle Stand des Uploads in bestimmten Zeitabständen aufgerufen werden, woraus eine bessere Feedback-Option, gerade beim Upload von größeren Daten, ermöglicht wird. Der aktuelle Stand wird dabei in einer superglobalen $_SESSION-Variable gespeichert.

Eine weitere und lang erwartete Möglichkeit ist der direkt in PHP 5.4 verfügbare Webserver, der zu Testzwecken durchaus geeignet ist. Allerdings raten die Entwickler von PHP davon ab, diesen in einer produktiven Umgebung einzusetzen. Zum Starten des Servers auf der Kommandozeile muss man nur in das gewünschte Verzeichnis wechseln. Mit dem Befehl:

php -S localhost:8000

wird der Server lokal auf dem Port 8000 erreichbar sein.
Abschließend will ich noch die Möglichkeit, die Ausführungszeit eines Skriptes in Mikrosekunden angeben lassen zu können, erwähnen.

PHP befindet sich weiterhin auf dem richtigen Weg. Die Sprache wird immer professioneller. Man darf gespannt sein, was den PHP-Entwickler in Zukunft noch erwartet.

(dpe)

Sven Schannak

ist ein leidenschaftlicher Web-Entrepreneur, freiberuflicher Web-Entwickler und stolzer Coding-Monkey.

Sortiert nach:   neueste | älteste | beste Bewertung
Gregor Don
Gast

Wozu sind Traits den jetzt gut? Aus dem geschriebenen und dem Beispiel kann ich nicht viel erkennen…
Was ist “Base” im Beispiel?
Schöne Auflistung von Neuerungen in PHP 5.4 aber leider mit wenig Lern- und Versteh-Effekt.

Oink
Gast

Sieht für mich aus wie ein Funktionsset, welches sich mehrere Klassen teilen und nicht in jeder Klasse umgesetzt werden müssen. Sprich, Vermeidung von doppelten Code. Das gleiche hätte man aber auch über eine Basisklasse und Vererbung machen können. Kann mit meiner Vermutung aber auch falsch liegen :D

wpDiscuz