![Page 1: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/1.jpg)
1
Hochschule DarmstadtFachbereich Informatik
Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Entwicklung webbasierter Anwendungen
![Page 2: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/2.jpg)
2
Hochschule DarmstadtFachbereich Informatik
Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
PHP 7
![Page 3: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/3.jpg)
3 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Releasekalender
http://php.net/supported-versions.php
4 PHP 7
![Page 4: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/4.jpg)
4 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Historie
● Urpsrünglicher Plan für PHP 6: Die PHP Engine sollte auf Unicode (UTF-16) portiert werden.
● Im März 2010 nach mehreren Jahren Diskussion PHP 6 Entwicklung eingestellt
● Direkter Sprung auf PHP 7
https://schlueters.de/blog/archives/128-Future-of-PHP-6.html
4 PHP 7
![Page 5: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/5.jpg)
5 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Big Picture
● PHP typisch: Kaum Änderungen, die die Abwärtskompatibilität brechen
● guter PHP 5 Code läuft in aller Regel auch unter PHP 7● Performance:
https://kinsta.com/blog/hhvm-vs-php-7/
4 PHP 7
![Page 6: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/6.jpg)
6 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Null coalescing Operator
VS
4 PHP 7
Äquivalent zu
![Page 7: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/7.jpg)
7 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: “Spaceship” Operator4 PHP 7
Drei-Wege-Vergleich, ähnlich zu “strcmp” in Chttp://www.cplusplus.com/reference/cstring/strcmp/
![Page 8: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/8.jpg)
8 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Array Konstanten4 PHP 7
![Page 9: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/9.jpg)
9 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Exception Handling4 PHP 7
● Aufruf einer Methode auf einem Null-Objekt, ohne Exception Handling
Crash mit Fatal Error, Abarbeitung des Skripts stoppt:
![Page 10: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/10.jpg)
10 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Exception Handling4 PHP 7
● In PHP 7 möglich:
![Page 11: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/11.jpg)
11 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Exception Handling4 PHP 7
● Achtung: “Error” != “Exception”. ● Fangen als “Exception” nicht möglich, um
Abwärtskompatibilität zu erhalten
![Page 12: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/12.jpg)
12 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Exception Handling4 PHP 7
● Neue Exception-Struktur: “Error” und “Exception” leiten beide von “Throwable” ab
https://www.daveyshafik.com/archives/69237-an-exceptional-change-in-php-7-0.html
![Page 13: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/13.jpg)
13 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Exception Handling4 PHP 7
● Mit catch (Throwable) lassen sich also Exceptions und Errors fangen
![Page 14: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/14.jpg)
14 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Anonyme Klassen4 PHP 7
![Page 15: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/15.jpg)
15 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
Meistdiskutiertes und wahrscheinlich relevantes PHP 7 Feature.
![Page 16: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/16.jpg)
16 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
Vor PHP 7 waren Typehints nur für Objekte und Arrays möglich. Nun auch für primitive Datentypen.
Auch der Rückgabetyp von Funktionen / Methoden kann vorgegeben werden!
![Page 17: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/17.jpg)
17 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
Unerwartete Parameter: Casting am Beispiel:● int $num1 -> float 4.7 wird zu int 4● float $num2 -> int 4 wird zu float 4.0● string $text -> int 123 wird zu string “123”
![Page 18: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/18.jpg)
18 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
●●●●●●●●●
Ausgabe von “Notices”, bspw. bei Übergabe eines Strings statt eines Integers
![Page 19: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/19.jpg)
19 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
Abhilfe schafft das Verwenden von “strict types”. Ausgabe eines Fatal Errors bei Typkonflikten.
![Page 20: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/20.jpg)
20 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Neue Features: Strict Types4 PHP 7
Zulässige Konvertierung trotz “strict_types”: int kann statt float übergeben werden. Im Beispiel wird int 5 für float $num2 akzeptiert.
![Page 21: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/21.jpg)
21 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Backwards Incompatible Changes4 PHP 7
● Auflistung: http://php.net/manual/de/migration70.incompatible.php
● Praktisch: Keine relevanten Brüche, nur relativ “exotische” Konstrukte betroffen
● Auswertungsreihenfolge:
![Page 22: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/22.jpg)
22 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Deprecated Changes4 PHP 7
● Auflistung: http://php.net/manual/de/migration70.deprecated.php
● “Deprecated Changes” werfen eine Deprecation Notice und werden in der nächsten “nicht minor” PHP Version entfernt
● Sollten jetzt bereits entfernt werden!
![Page 23: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/23.jpg)
23 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Deprecated Changes4 PHP 7
● “PHP 4 Style” Konstruktoren sollten nicht mehr verwendet werden, nur noch “__construct”:
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a
deprecated constructor in example.php on line 3
![Page 24: relevantesten Änderungen in PHP7 in Präsentationsform](https://reader033.vdokument.com/reader033/viewer/2022042707/5875e75a1a28ab50348b4bc2/html5/thumbnails/24.jpg)
24 Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016
Deprecated Changes4 PHP 7
● Nicht-statische Methoden sollten nicht mehr statisch aufgerufen werden
Deprecated: Non-static method foo::bar() should not be called statically in - on line 8
I am not static!