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

relevantesten Änderungen in PHP7 in Präsentationsform

Jan 11, 2017

Download

Documents

letram
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!