Die wichtigsten Neuerungen in PHP 7.1.0

Ein ganzes Jahr strich durchs Land bis das PHP Update 7.1.0 am 1. Dezember 2016 veröffentlicht wurde. Die neue Version kommt allerdings nicht nur mit zahlreichen Fehlerbehebungen und Verbesserungen daher, sondern bringt uns auch die ein oder andere nützliche Funktion mit. So wird schleichend weiter an der Typendeklaration gefeilt, Exceptions können nun im catch Statement zusammengeführt werden und weitere Kleinigkeiten verbessern die Arbeit mit der Programmiersprache.

Neuerungen bei der Typendeklaration

Die, in PHP 7.0.0 eingeführte, Typendeklaration wird mit sogenannten Nullable Notations erweitert. Diese werden mit einem ? vor der eigentlichen Typenangabe deklariert und erlauben die Angabe (oder auch Rückgabe) von null anstelle des entsprechend angegebenen Typens.

Der Funktion folgen 2 zusätzliche Typen: iterable deklariert einen Schleifen-fähigen Wert, also ein Array oder ein Objekt welches über Iterator oder IteratorAggregate das Traversable Interface implementiert und somit zum Beispiel auch in einer foreach Schleife genutzt werden kann. Der neue void Typ hingegen definiert lediglich das Fernbleiben eines jeglichen Rückgabewertes bei einer entsprechenden Funktion oder Methode (ähnlich wie bei anderen Programmiersprachen).

Nullable Notation

<?php
    declare(strict_types=1);

    function repeat(string $string, ?int $num): ?string {
        if( ( $num ?? 0 ) <= 0 ) {
            return null;
        }   
        return str_repeat($string, $num);
    }

    repeat("Hello World", 1);       // Gibt "Hello World" aus
    repeat("Hello World", null);    // Gibt "null" zurück

Iterable Typ

<?php
    declare(strict_types=1);

    function loop(iterable $array): ?string {
        if( is_array($array) && empty( $array ) ) {
            return null;
        }
        if( $array instanceof Traversable && iterator_count($array) == 0 ) {
            return null;
        }

        $return = "";
        foreach($array AS $key => $value) {
            $return .= "{$key}: {$value}\n";
        }
        return $return;
    }

Void Typ

<?php
    declare(strict_types=1);

    function my_function(): void {
        // Diese Funktion gibt keinen Rückgabewert an
    }

Neue Funktionen für list()

Die Kurzform zur Erstellung eines Arrays über die 2 eckigen Klammern [] kann nun auch stellvertretend für die list() Funktion verwendet werden, um die einzelnen Elemente eines Arrays den entsprechenden Variablen zuzuordnen. Desweiteren können nun auch assoziative Arrays (also Arrays mit einem String-Index) mit der list() Funktion ausgepackt werden.

List Shorthand

<?php
    $array = [
        "SamBrishes", "https://www.denypanic.dev"
    ];

    [$wert1, $wert2] = $array;

List für Assoziative Arrays

<?php
    $array = array(
        "name"      => "SamBrishes",
        "domain"    => "https://www.denypanic.dev"
    );

    ["domain" => $domain, "name" => $name] = $array;

Konstanten & Exceptions

Die letzten beiden erwähnenswerten Neuerungen finden sich einerseits bei den Klassenkonstanten. Denn dessen Sichtbarkeit kann nun auch über public, protected sowie private definiert werden. Andererseits wurden Exceptions insoweit erweitert, dass mehrere Exceptions über ein | Zeichen innerhalb eines catch() Statements zusammengeführt werden können.

Klassenkonstanten

<?php
    class MeineKlasse {
        const PUBLIC_CONSTANT_A = "1";
        public const PUBLIC_CONSTANT_B = "2";
        protected const PROTECTED_CONSTANT = "3";
        private const PRIVATE_CONSTANT = "4";
    }

Union Exceptions

<?php
    try {

    } except (ErsteException | ZweiteException %e) {

    }

Weitere Informationen zum neuen PHP Update findest du auf php.net.