Abo
  • Services:
Anzeige
PHP 7 ist erschienen.
PHP 7 ist erschienen. (Bild: PHP.net)

Neue Features in PHP 7

Die am intensivsten diskutierte Neuerung in PHP 7 sind skalare Typehints. Damit können an einem Methoden- oder Funktionsparameter nun auch Typehints für Integer, Float, Boolean und String hinterlegt werden. In PHP 5 war das bisher nur für Objekte und Arrays möglich. Dieses Feature war, in anderer Form, sogar schon einmal Bestandteil von PHP 5.0, wurde aber damals kurz vor dem Release wieder entfernt.

Seit Jahren wird diskutiert, wie sich PHP verhalten soll, wenn der Typ des übergebenen Wertes nicht mit dem Typehint übereinstimmt.

Anzeige

Das PHP-Entwicklerteam hat jetzt eine Lösung eingebaut, die dem aufrufenden Skript die Verantwortung überlässt, ob die Aufrufe strikt überprüft oder in den entsprechenden Zieltyp konvertiert werden sollen. Die automatische Konvertierung bleibt auch in PHP 7 der Standardfall, was bedeutet, dass keine Änderungen an der eigenen Software notwendig sind.

Wer das neue, strikte Verhalten für seine Software verwenden will, kann dies ab PHP 7 aber explizit so definieren. Da immer das aufrufende Skript den Modus auswählt, können auch externe Bibliotheken problemlos verwendet werden.

Neben Typehints für Funktions- und Methodenparameter kann in PHP 7 nun auch der Typ des Rückgabewerts fest definiert und dokumentiert werden. Das folgende Beispiel zeigt die Syntax für skalare Typehints und Rückgabewerte:

  1. function add(int $a, int $b): int
  2. {
  3. return $a + $b;
  4. }
  5.  
  6. echo add("10", 100); // Ergebnis: 110

Hier wird die String "10" von PHP in eine Integer 10 umgewandelt. Im strikten Modus löst derselbe Code einen Fehler aus:

  1. declare(strict_types=1);
  2.  
  3. function add(int $a, int $b): int
  4. {
  5. return $a + $b;
  6. }
  7.  
  8. echo add("10", 100); // Ergebnis: TypeError

Fehler und Exceptions

Eine weitere Änderung, die auf den ersten Blick wenig spektakulär aussieht, hat es in sich: Alle fatalen Fehler sind in PHP 7 Exceptions und können nun abgefangen werden, ohne für den sofortigen Abbruch des Programms zu sorgen. Dazu gehört insbesondere der ehemals fatale Fehler "Call to a member function ?() on a non object" - PHPs Äquivalent zu Javas Java.Lang.NullPointerException.

Laufzeitfehler leiten nun, genau wie Exceptions, von einem neuen Interface Throwable ab und können entweder über dieses Interface oder die Basisklasse Error abgefangen werden. Das ermöglicht Entwicklern, solche Fehler abzufangen und sinnvoll darauf zu reagieren, z. B. durch Einblendung einer hilfreichen Fehlerseite.

Außerdem wurden alle E_STRICT-Fehler reklassifiziert: Entweder der Fehler weist jetzt auf ein veraltetes Feature hin, das in der nächsten Version (PHP 8) entfernt wird, oder der Fehler wird jetzt mit einem strengeren Fehlercode als Warnung oder Notiz gewertet.

Syntactic Sugar

Schon mit PHP 5.3 wurde der oft als abgekürzter Ternary-Operator (shorthand ternary) bezeichnete Operator ?: eingeführt. Dieser gibt den Wert auf der linken Seite zurück, wenn er PHPs Interpretation von wahr entspricht, und sonst den Wert auf der rechten Seite.

Oft wird in PHP aber ein Operator gesucht, der überprüft, ob der Wert auf der linken überhaupt gesetzt ist, ohne dabei einen Fehler auszulösen. Dafür wurde nun der Operator ?? eingeführt, der den Wert auf der linken Seite zurückgibt, wenn er gesetzt ist und sonst den Wert auf der rechten Seite des Operators.

  1. $sortBy = $_GET['sortBy'] ?? 'name';

Neu ist auch der sogenannte Spaceship-Operator <=>, der die Sortierung vereinfacht. Der Operator gibt -1 zurück, wenn der linke Wert kleiner ist als der rechte, 0 wenn beide gleich sind und sonst +1. Damit lassen sich Daten sehr einfach mittels der existierenden Sortierfunktionen vergleichen.


usort($users, function($a, $b) {
    return $a->id <=> $b->id;
});

In PHP 7 ist es nun auch möglich, anonyme Klassen zu definieren, die direkt instantiiert werden. Das kann nützlich sein, wenn eine Instanz eines Interfaces oder einer abstrakten Klasse nur an einer einzigen Stelle im Code verwendet wird, z. B. bei Test Doubles in Unit-Tests.

  1. interface Logger
  2. {
  3. public function log($message);
  4. }
  5.  
  6. $echoLogger = new class implements Logger {
  7. public function log($message)
  8. {
  9. echo $message . "\n";
  10. }
  11. };
  12.  
  13. $echoLogger->log("Hello World!");

 Programmiersprache im Test: Mit PHP 7 wird das Internet schnellerRückwärtskompatibilität 

eye home zur Startseite
DASPRiD 07. Dez 2015

Ondrej sellt in einem experimentellen Repository alle PHP-Minor Versionen zur Verfügung...

Baron Münchhausen. 07. Dez 2015

+1 Solchen Pfosten ist es nicht bewusst, dass sie damit niemandem, der Ahnung hat was...

zilti 07. Dez 2015

DAS würde ich gerne sehen, dass man das mit Browsereinstellungen verhindern kann...

addik5 05. Dez 2015

https://en.wikipedia.org/wiki/No_true_Scotsman

tibrob 04. Dez 2015

Vergleiche doch einfach mal: Extension: http://php.net/manual/de/book.imagick.php...



Anzeige

Stellenmarkt
  1. Faubel & Co. Nachf. GmbH, Melsungen
  2. über JobLeads GmbH, Hamburg
  3. über JobLeads GmbH, München
  4. Dataport, Halle (Saale), Magdeburg


Anzeige
Spiele-Angebote
  1. (-15%) 25,49€
  2. ab 129,99€
  3. 25,99€

Folgen Sie uns
       


  1. Nokia 3, 5 und 6

    HMD Global bringt drei Nokia-Smartphones mit Android

  2. Moto G5 und Moto G5 Plus im Hands on

    Lenovos kompakte Mittelklasse ist zurück

  3. Handy-Klassiker

    HMD Global bringt das Nokia 3310 zurück

  4. Galaxy Tab S3 im Hands on

    Samsung präsentiert Oberklasse-Tablet mit Eingabestift

  5. Galaxy Book im Hands on

    Samsung bringt neuen 2-in-1-Computer

  6. Mobilfunk

    "5G muss weit mehr als LTE bieten"

  7. UHS-III

    Neuer (Micro-)SD-Karten-Standard schafft über 600 MByte/s

  8. Watch 2 im Hands on

    Huaweis neue Smartwatch soll bis zu 21 Tage lang durchhalten

  9. LG G6 im Hands on

    Schlankes Smartphone hat zwei Kameralinsen

  10. P10 und P10 Plus im Hands on

    Huaweis neues P10 kostet 600 Euro



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Bundesnetzagentur: Puppenverbot gefährdet das Smart Home und Bastler
Bundesnetzagentur
Puppenverbot gefährdet das Smart Home und Bastler
  1. My Friend Cayla Eltern müssen Puppen ihrer Kinder zerstören
  2. Matoi Imagno Wenn die Holzklötzchen zu dir sprechen
  3. Smart Gurlz Programmieren lernen mit Puppen

Galaxy-A-Serie vs. P8 Lite (2017): Samsungs und Huaweis Kampf um die Mittelklasse
Galaxy-A-Serie vs. P8 Lite (2017)
Samsungs und Huaweis Kampf um die Mittelklasse
  1. Wettbewerbsverstoß Google soll Tizen behindert haben
  2. Strafverfahren De-facto-Chef von Samsung wegen Korruption verhaftet
  3. Samsung Preisliches Niveau der QLED-Fernseher in der Nähe der OLEDs

Fire TV Stick 2 mit Alexa im Hands on: Amazons attraktiver Einstieg in die Streaming-Welt
Fire TV Stick 2 mit Alexa im Hands on
Amazons attraktiver Einstieg in die Streaming-Welt
  1. Fernsehstreaming Fire-TV-App von Waipu TV bietet alle Kanäle kostenlos
  2. Fire TV Amazon bringt Downloader-App wieder zurück
  3. Amazon Downloader-App aus dem Fire-TV-Store entfernt

  1. Re: Wozu?

    Niaxa | 01:06

  2. Ist fast gekauft...

    jack56 | 01:04

  3. Re: suche lte-tablet, das auch mal lädt

    Gladiac782 | 00:46

  4. Re: stand by 1 monat?

    Bujin | 00:46

  5. Noch drei Jahre, bis 2020 benutzbar

    Siliciumknight | 00:18


  1. 21:13

  2. 20:32

  3. 20:15

  4. 19:00

  5. 19:00

  6. 18:45

  7. 18:10

  8. 17:48


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel