relevantesten Änderungen in php7 in präsentationsform

24
1 Hochschule Darmstadt Fachbereich Informatik Entwicklung webbasierter Anwendungen, WS2015/2016, Christopher Dörge / David Müller 18.01.2016 Entwicklung webbasierter Anwendungen

Upload: letram

Post on 11-Jan-2017

223 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: relevantesten Änderungen in PHP7 in Präsentationsform

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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!