Tag-Archive for » int «

Rückgabe in PHP 7.1

php7-1Außer den internen Veränderungen, die die beliebte Programmiersprache deutlich beschleunigt haben, brachte Version 7 von PHP viel Neues im Umgang mit dem Typsystem der Sprache.

Mit dem ersten großen Sprachupdate PHP 7.1 erweiterten die Entwickler PHP um Funktionen, die man so auch aus anderen Sprachen kennt. Dazu gehört unter anderem beispielsweise der explizite Verzicht auf einen echten Rückgabewert.

Nirwana-Rückgabe: Nullen oder Nichts

Denn jetzt gehört zu den sogenannten Typehints auch das Schlüsselwort void. Der Typehint zum Beispiel für den Datentyp int gibt ja auch an, dass der Typ des betreffenden Rückgabewerts ein Integer (Ganzzahl) sein soll. Genauso gibt in PHP 7.1 der Typehint void an, dass die Funktion eben nichts zurückgibt, sondern ausschließlich prozedural arbeitet.

Wie in den Sprachen C und C++ kann aus einer Methode durch die Angabe von return; zurückgekehrt werden. Auch auf diese Angabe kann verzichtet werden. Sinnvoll sei die Verwendung von void vor allem zur Dokumentation und zur Fehlerüberprüfung. Es macht in jedem Fall deutlich, „dass eine Funktion eine Aktion ausführt und kein Ergebnis erzeugt“.

Bis jetzt hatte PHP unter bestimmten Umständen Probleme bei Rückgabewerten, die keinen Standardwert haben, weshalb das Team eine einheitliche Syntax eingeführt hat, um zu zeigen, dass der Wert auch null sein kann. Dies ist ab der Version 7.1 für alle erlaubten Typen möglich, indem den Typen ein Fragezeichen vorangestellt ist, also zum Beispiel ?int.

Iterationen und Konstanten

Als neuer Pseudotyp ist das Keyword iterable neu hinzugekommen. Bisher konnte man keinen Typ für iterierbare Rückgaben festlegen und musste tricksen, wenn man eine Funktion innerhalb einer Foreach-Schleife nutzen wollte.

Auch aus dem Umfeld von C und C++ kommt die neue Zugriffsmodifikation, die neben Funktionen jetzt auch für Klassenkonstanten genutzt werden kann. Das Team löse damit eine bisher bestehende Inkonsistenz recht einfach auf. Als Schlüsselworte dazu kann man publicprotected und private nutzen. Konstanten, die ohne eines dieser Schlüsselworte deklariert werden, sind wie schon bisher immer public.

PHP 7 kann skalare Typen deklarieren

phpmarginDie meistdiskutierte Funktion von PHP 7 ist sicher die Deklaration skalarer Typen. Bei einer gestern Abend durchgeführten Abstimmung erreichte die inzwischen fünfte Version des Vorschlags jetzt die nötige Zweidrittelmehrheit der beteiligten Entwickler. Also wird PHP 7 jetzt um die Typen Int, Float, String und Bool erweitert.

Allerdings muss die Verwendung einer strengen Überprüfung dieser Typen von den Nutzern explizit in jeder Datei über die Anweisung declare(strict_types=1) erzwungen werden. Das muss die erste Direktive in einer Programmdatei stehen und führt an anderen Stellen zu einer Fehlermeldung. Ohne diese Codezeile wird standardmäßig nur eine schwache Typenüberprüfung durchgeführt.

Wenn die neue Anweisung genutzt wird, müssen alle Funktionsaufrufe und Rückgabewerte in der Datei selbst und in darauf aufbauenden Erweiterungen und eingebaute PHP-Funktionen beim Parsen einer Typprüfung standhalten, sonst wird auch ein Fehler ausgegeben.

Im Gegensatz zu der schwachen Überprüfung, bei der die Werte noch in andere Typen umgewandelt werden können, gibt es unter der starken Überprüfung nur eine einzige erlaubte Umwandlung, nämlich die von Int zu Float.

PHP 7: Ausstieg einer Entwicklerin und die Folgen

phpmarginPer E-Mail mit dem Betreff „I quit – Ich höre auf“ hat Andrea Faulds ihren Rückzug aus der Entwicklung von PHP ankündigt.

In den letzten zwei Jahren hat Faulds an einigen grundlegenden Arbeiten an der nächsten Hauptversion der Programmiersprache mitgearbeitet und umfassende Änderungen für das kommende PHP 7 vorgeschlagen, deren Weiterentwicklung jetzt durch ihren Ausstieg ungewiss ist.

Das betrifft besonders das geplante und kontrovers diskutierte skalare Typensystem in PHP 7. Damit würde die Sprache um die Typen int, float, string und bool erweitert – und auch um eine strikte Überprüfung dieser Typen pro Datei, falls man das wünscht.

Faulds ist bisher auch für den Drei-Wege-Vergleichsoperator, den Void-Rückgabewert sowie die Unterstützung für sogenannte Big-Ints verantwortlich gewesen. Lassen wir uns überraschen, welche der Neuerungen den Weg in PHP 7 noch schaffen…