Open Source im professionellen Einsatz
Linux-Magazin 01/2016
510

Kultivierung

Längst überfällig waren auch die Reparaturarbeiten am »list« -Konstrukt. Der Ausdruck »list($a[], $a[], $a[]) = array(1,2,3);« speichert die Zahlen aus dem Feld rechts neben dem Gleichheitszeichen nun in der korrekten, aufsteigenden Reihenfolge: »1« , »2« , »3« unter »$a« ab. Zusätzlich zerlegt »list« alle Objekte, deren Vorlageklassen das Array-Access-Interface implementieren, etwa:

list($a, $b) = (object) new ArrayObject([0, 1])

Zeichenketten aus Variablen extrahiert PHP 7 hingegen nicht mehr, leere »list« -Ausdrücke wie »list() = $a;« geben zusätzlich einen Fehler aus.

Auch Datentypen behandelt PHP 7 anders. Illegale Ausdrücke für oktale Zahlen wie »0128« lösen nun einen Parse Error aus, Bit-Shift-Operationen mit negativen Zahlen wie »1 >> -1 « eine Exception vom Typ »ArithmeticError« . Bit-Shift-Operationen, deren Ergebnis die Breite eines Integer überschreitet, wertet PHP 7 stets nach 0 aus. Zuvor war das Ergebnis solcher Operation fatalerweise abhängig von der eingesetzten Prozessorarchitektur. Auch auf das Teilen durch 0 reagiert PHP 7 anders. Hexadezimale Zahlen innerhalb von Zeichenketten interpretiert es nicht mehr und der Ausdruck »'0xf' == 0xf« ist immer falsch.

Wer sich nun noch immer wundert, warum seine PHP-Skripte noch nicht funktionieren, sollte einen Blick auf die Liste der geänderten Funktionen [2] werfen. Der Vollständigkeit halber sei angemerkt, dass doppelte Klammern um Rückgabewerte von Funktionen einfach nur noch formal redundant sind und »global« nur einfache Variablen akzeptiert.

Optimierungsgebaren

Wer seine Skripte ohnehin durchgeht, kann auch gleich an passender Stelle einige der neuen Features von PHP 7 einbauen. Seine Änderungen überprüft der Anwender mit der »assert()« -Funktion direkt im Code. Setzt er »ini_set('zend.assertion', -1)« , übergeht PHP 7 die Funktionsaufrufe von »assert()« im Produktionsmodus kostenneutral. Der neue Coalesce-Operator »??« gestaltet den Programmcode übersichtlicher und erspart Tipparbeit (Zeile 3, Listing 5).

Listing 5

Neuer Coalesce-Operator

01 <?php
02 $result = isset($var)?$var:isset($bar)?$bar:1;
03 $result = $var ?? $bar ?? 1;
04 ?>

Ähnlich elegant entfaltet sich im Programmcode der neue kombinierte Vergleichsoperator »<=>« , auch Spaceship-Operator genannt. Er arbeitet binär und vergleicht zwei Werte bezüglich der Relationen »>« , »<« und »=« in einem Atemzug. Für den Fall der Gleichheit wertet PHP 7 den Ausdruck »1 <=> 1« zu »0« , für kleiner »0 <=> 1« zu »-1« und für größer »1 <=> 0« zu »1« aus. Der Operator macht sich die lexikalische Ordnung in der Menge aller Zeichen zunutze, um Zeichenketten vergleichbar zu gestalten. Den Ausdruck »"foo" <=> "bar"« wertet er als »1« .

Daneben lassen sich »use« -Anweisungen platzsparend in einer Zeile zusammenfassen, etwa so:

use foo\bar{Class Foo, Class Bar as FooBar}

Im Übrigen bietet PHP 7 die Möglichkeit, mittels »define« Felder zu Konstanten zu erheben und Unicode-Zeichen mit Hilfe einer Escape-Syntax wie in »"\u{af}"« innerhalb von Zeichenketten zu repräsentieren. Die Skriptsprache kodiert einzelne Zeichen über ihren hexadezimalen Code im Unicode-Standard.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Pony

    Die statisch getypte und objektorientierte Programmiersprache Pony trabt auf eher abseitigen Pfaden, um mit sicherem und hochperformantem Code für nebenläufige Anwendungen ihre Fans zu beglücken.

  • ECMA-Script 6

    Der kommende Sprachstandard ECMA-Script 6 beseitigt viele historische Javascript-Eigenheiten. Die bisher vermissten Klassen, Module und Default-Parameter erleichtern das Coden vor allem den Umsteigern von anderen Programmiersprachen.

  • React

    Vom Unternehmen Facebook kommt das quelloffene Javascript-Framework React, das Weboberflächen geschickt mit Datenschätzen verknüpft. Insbesondere die Renderfunktion macht sich dabei nützlich.

  • Squirrel

    Wer eine Skriptsprache mit schlankem Interpreter sucht, der sich möglichst einfach in Anwendungen einbetten lässt, greift schon fast blind zu Lua. In deren Schatten wartet jedoch schon länger ein praxiserprobter Konkurrent namens Squirrel. Dieser Artikel stellt die Open-Source-Sprache in einem Crashkurs vor.

  • Node.js und Redis

    Javascript auch auf dem Server nutzen, das verspricht das Webserver-Framework Node.js und bietet zahlreichen Erweiterungen und viele Funktionen, aber auch hohe Performance. Dieser Artikel zeigt, wie sich im Verbund mit der Datenbank Redis eine einfache und schnelle Buchungsapplikation entwickeln lässt.

comments powered by Disqus

Ausgabe 08/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.