48
1.1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP .net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme" von BugBuster

PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

1 . 1

PHP 7 IST DA

Glen Langer

Contao Camp 2016 in Nürnberg

Version: 1.2.0 vom 10.02.2017

(Bild: PHP.net)

Slides erstellt mit der Erweiterung "contao-reveal-js-theme" von BugBuster

Page 2: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

2 . 1

ÜBER MICHContao seit 2.5.8PHP ZCEForum: BugBusterCamp: James Buster, im Auftrag von Contaohttp://contao.ninja/

Page 3: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

3 . 1

INHALTUmstieg, wann und warum?Neue, zu alte und fast zu alte FunktionenInkompatibilitätenMigrationshinweise, speziell für Contao ErweiterungenTools

Page 4: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

4 . 1

UMSTIEG, WANN UND WARUM?

http://php.net/supported-versions.php PHP 7.1 wurde am 02.12.2016 veröffentlicht

Page 5: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

4 . 2

UMSTIEG, WANN UND WARUM? Aus Performance Gründen!

Kern von PHP grundlegend überarbeitet, gegenüber PHP 5.0 sollPHP 7.0 ganze 10-14 mal schneller sein, gegenüber PHP 5.6immerhin doppelt so schnell und dabei mit geringeremSpeicherverbrauch.

Page 6: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 1

NEUESNull coalescing Operator (??)

Spaceship-Operator (<=>)

Array Konstanten

Anonyme Klassen

Exception Handling (eventuell zu Inkompatibilitäten)

 

Page 7: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 2

Null coalescing Operator (??)$sortBy = $_GET['sortBy'] ?: 'name';

Problem, wenn "sortBy" nicht gesetzt. Lösung bisher:

$sortBy = isset($_GET['sortBy']) ? $_GET['sortBy'] : 'name';

Lösung mit PHP 7:

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

 

Page 8: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 3

Spaceship-Operator (<=>)Ein Drei-Wege-Vergleich, vereinfacht Sortierungen.

echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1

echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1

echo [] <=> []; // 0 echo [1, 2, 3] <=> [1, 2, 3]; // 0 echo [1, 2, 3] <=> []; // 1 echo [1, 2, 3] <=> [1, 2, 1]; // 1 echo [1, 2, 3] <=> [1, 2, 4]; // -1

Page 9: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 4

Array KonstantenKonstanten können nun auch ein Array beinhalten:

define('FARBEN' , ['rot', 'blau', 'grün']); echo FARBEN[0]; // rot

Page 10: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 5

Anonyme Klasseninterface Logger { public function log($message); } $echoLogger = new class implements Logger { public function log($message) { echo $message . "\n"; } }; $echoLogger->log("Hello World!");

Page 11: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 6

Exception HandlingAlle fatalen Fehler sind in PHP 7 Exceptions. Diese können nunabgefangen werden, ohne sofortigen Abbruch des Programms.

Dazu gehört zum Beispiel der ehemals fatale Fehler: "Call to a member function ?() on a non object".

$foo = null; $foo->methodCall();

Page 12: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 7

Exception HandlingLaufzeitfehler, genau wie Exceptions, werde nun von einemneuen Interface Throwable abgeleitet.

Diese können nun entweder über dieses Interface oder dieBasisklasse Error abgefangen werden.

Achtung: “Error” != “Exception”

$foo = null; try { $foo->methodCall(); } catch (Exception $ex) { echo "Fehler: " . $ex->getMessage(); } // PHP Fatal Error....

Page 13: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 8

Exception HandlingIn PHP 7 nun möglich:

$foo = null; try { $foo->methodCall(); } catch (Error $ex) { echo "Fehler: " . $ex->getMessage(); } // Fehler: Call to a member function ...

Page 14: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 9

Exception HandlingMit catch (Throwable) lassen sich Exceptions und Errors fangen:

$foo = null; try { $foo->methodCall(); } catch (Throwable $ex) { echo "Fehler: " . $ex->getMessage(); } // Fehler: Call to a member function ...

Page 15: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

5 . 10

Exception HandlingVariante die kompatibel ist mit PHP 5 und PHP 7:

try { // Code that may throw an Exception or Error. } catch (Throwable $t) { // Executed only in PHP 7, will not match in PHP 5.x } catch (Exception $e) { // Executed only in PHP 5.x, will not be reached in PHP 7 }

Page 16: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

6 . 1

REMOVED EXTENSIONS- ext/mssql - ext/mysql- ext/sybase_ct - ext/ereg - ext/mcrypt (ab 7.2, deprecated in 7.1 )

Page 17: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 1

INKOMPATIBILITÄTENInkompatible Features

Skalare Typehints

Uniform variable syntax (Auswertungsreihenfolge)

Änderungen bei 'list'

Änderungen bei 'foreach'

func_get_args()

Page 18: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 2

Skalare TypehintsVor PHP 7 waren Typehints nur für Objekte und Arrays möglich.Nun auch für primitive Datentypen.

Daher ist es nun nicht mehr möglich, Klassen, Interfaces, Traitswie folgt im Namen zu deklarieren: (case-insensitive)

ab 7.0: bool, int, float, string, null, false, true ab 7.1: void, iterable

Das betrifft auch die Verwendung der Namen bei class_alias()und use Statements.

Für die Zukunft sind folgende Namen reserviert, erzeugen abernoch keine Fehlermeldung:

resource, object, mixed, numeric

Page 19: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 3

Skalare TypehintsAuch der Rückgabetyp von Funktionen / Methoden kann nunvorgegeben werden! Komplettes Beispiel:

function addition (int $num1, float $num2, string $text) : string { return $text . ": " . ($num1 + $num2); } echo addition(2, 1.14, "Ergebnis"); //Ergebnis: 3.14

Page 20: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 4

Skalare TypehintsWerden die Parameter vom Typ nicht eingehalten, passiertfolgendes:

function addition (int $num1, float $num2, string $text) : int { return $text . ": " . ($num1 + $num2); } echo addition("2hallo", 1.14, 42); //PHP Notice: A non well formed numeric value encountered... line 1 //PHP Notice: A non well formed numeric value encountered... line 3 //42

Page 21: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 5

Skalare TypehintsStrengere Prüfung mit strict types, Ausgabe eines Fatal Errors beiKon�ikten:

declare(strict_types=1); function addition (int $num1, float $num2, string $text) : string { return $text . ": " . ($num1 + $num2); } echo addition(2, 1.14, 42); //PHP Fatal error: Uncaught TypeError: Argument 3 ... //must be of type string, integer given

Zulässig wäre hier trotzdem ein Integer statt Float zu übergeben,das wird konvertiert. Hinweis: die "declare" Zeile, die am Anfang einer Datei gesetztwerden kann, muss in jeder Datei enthalten sein, wo die strengePrüfung gewünscht ist.

Page 22: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 6

Uniform variable syntax(Auswertungsreihenfolge)

Expression PHP 5 interpretation PHP 7 interpretation

$$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz']

$foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz']

$foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']()

Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()

Hint: Use the syntax of the PHP5 interpretation, which is alsounderstood in PHP7.

Page 23: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 7

Änderungen bei 'list'Bei Verwendung von nur einem Array weist list() in PHP 5 dieWerte von rechts beginnend zu. In PHP 7 beginnt list() vonlinks.

//ohne Arrays $info = array('Kaffee', 'braun', 'Koffein'); list($drink, $color, $power) = $info; echo "{$drink} - {$color} - {$power}.\n" ; //Kaffee - braun - Koffein. //mit unterschiedlichen Arrays list($a[], $b[], $c[]) = $info; echo "$a[0] - $b[0] - $c[0].\n"; //Kaffee - braun - Koffein. //aber mit dem selben Array list($a[], $a[], $a[]) = $info; echo "$a[0] - $a[1] - $a[2].\n"; //PHP 5: Koffein - braun - Kaffee. //PHP 7: Kaffee - braun - Koffein.

Page 24: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 8

Änderungen bei 'foreach'Der interne Zeiger innerhalb von foreach im iterierten Array wirdnicht mehr modi�ziert. Bei zusätzlicher Verwendung der Array-Funktionen current() oder next() innerhalb einer foreach-Schleife,wird sich der entsprechende Code unter PHP 7 anders verhalten.

$array = [0, 1, 2]; foreach ($array as $key) { var_dump(current($array)); next($array); } //PHP 5: int(1), int(2), bool(false) //PHP 7: int(0), int(1), int(2)

Page 25: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 9

Inkompatibilität: func_get_arg[s]()PHP 5: func_get_arg() / func_get_args() liefert immer dieOriginalwerte der Funktionsparameter. Werden die Werte vordem Aufruf verändert, werden trotzdem die alten Wertegeliefert.

PHP 7: Hier würde man die veränderten Werte erhalten.

Page 26: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

7 . 10

Inkompatibilität: func_get_arg()function foo($x) { $x++; var_dump(func_get_arg(0)); } foo(1);

Ergibt in PHP 5: 1

Ergibt in PHP 7: 2

Page 27: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

8 . 1

DEPRECATED FEATURES“PHP 4 Style” Konstruktoren

Nicht-statische Methoden sollten nicht mehr statisch aufgerufenwerden

Password hash (salt option)

 

Page 28: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

8 . 2

DEPRECATED FUNCTIONS__autoload() (ab PHP 7.2)

Ersatz ab PHP 5.1 durch spl_autoload_registercreate_function() (ab PHP 7.2)

Ersatz ab PHP 5.3 durch anonyme Funktionen (closures)each() (ab PHP 7.2)

Ersatz wäre foreach(), ist auch schneller

Weitere Funktionen sind noch in Diskussion. (Stand: 10.02.2017)

Page 29: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

9 . 1

MIGRATIONSHINWEISEMigrationshinweise für Contao Erweiterungen

Page 30: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

9 . 2

Anpassung AbhängigkeitenAnpassung composer.json bzw. Einstellungen in ER2 auf Contao

3.5.5 bzw. 4.1.0 oder höher.

Page 31: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

9 . 3

String Klasse ersetzenWurde die String Klasse aus dem Contao Core verwendet?

Dann durch StringUtil ersetzen. Beispiele:

String::toXhtml(...) zu StringUtil::toXhtml(...)

Achtung: Die Methoden der String Klasse wurde vor längererZeit statisch. Die StringUtil Klasse verlor dabei die über�üssiggewordene Methode "getInstance". Erweiterungen mit diesem Aufruf:

$objString = String::getInstance();

müssen da eventuell noch mehr anpassen. (z.B. die Erweiterung clipboard, siehe )#14

Page 32: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

9 . 4

Indirekte VariablenWurde ein eigene Hook entwickelt? Der Aufruf der registrierten

Klasse und Methode muss angepasst werden.

$this->$callback[0]; zu $this->{$callback[0]}; $this->$callback[0]->$callback[1](...); zu $this->{$callback[0]}->{$callback[1]}(...); System::importStatic($callback[0])->$callback[1](); zu System::importStatic($callback[0])->{$callback[1]}();

Page 33: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 1

TOOLSTools um die Migration zu vereinfachen von PHP 5 auf PHP 7.

Page 34: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 2

PHP 7 Compatibility Checker (php7cc)Kommandozeilen-Tool, um die Migration von PHP 5.3-5.6 zu PHP7 zu vereinfachen. Es sucht nach potenziell problematischenAnweisungen in bestehenden Code und erzeugt Berichte mitDateinamen, Zeilennummern und kurze Problembeschreibungen.

Page 35: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 3

PHP 7 Compatibility Checker (php7cc)Ausgabe einer Prüfung:

File: /system/modules/core/library/Contao/String.php > Line 29: Reserved name "string" used as a class, interface or trait name class String { }

Aber Achtung: Nicht gefunden wird derzeit so etwas:

$value = \String::encodeEmail($value); $xhtml = String::toXhtml($html5);

Page 36: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 4

PHP 7 Compatibility Checker (php7cc)Ausgabe einer Prüfung:

File: /system/modules/core/library/Contao/Database/Mysql.php > Line 57: Removed function "mysql_connect" called mysql_connect($strHost, $dbUser, $dbPass); > Line 62: Removed function "mysql_query" called mysql_query('SET sql_mode=\'\'', $this->resConnection); ...

Page 37: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 5

PHP 7 Compatibility Checker (php7cc)Ausgabe einer Prüfung:

File: /system/modules/core/modules/ModulePersonalData.php > Line 90: Indirect variable, property or method access $this->{$callback[0]}->{$callback[1]}();

Achtung! Hier wird bereits der korrigierte Quellcodeausgegeben. Die originale Zeile ist:

$this->$callback[0]->$callback[1]();

Page 38: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 6

PHP 7 Compatibility Checker (php7cc)Weitere Informationen auf GitHub: sstalle/php7cc

Installationen sind über Composer (global/lokal), als "phar" undals Docker Image möglich.

Page 39: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 7

PHP 7 Migration Assistant Report (MAR)Kommandozeilen-Tool, um die Migration von PHP 5.4-5.6 zu PHP7 zu vereinfachen. Es sucht nach potenziell problematischenAnweisungen in bestehenden Code und erzeugt Berichte mitDateinamen, Zeilennummern und kurze Problembeschreibungen.

Page 40: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 8

PHP 7 Migration Assistant Report (MAR)Ausgabe einer Prüfung:

Report located at: /php7mar/reports/2016-08-18 22.59.28 String.md

Darin im Markdown Format sind Meldungen dieser Art:

critical /system/modules/core/library/Contao/String.php * reservedNames * Line 25: `class String`

Aber Achtung: Nicht gefunden wird derzeit so etwas:

$value = \String::encodeEmail($value); $xhtml = String::toXhtml($html5);

Page 41: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 9

PHP 7 Migration Assistant Report (MAR)Ausgabe einer Prüfung:

Report located at: /php7mar/reports/2016-08-18 22.48.29 Mysql.md

Darin im Markdown Format sind Meldungen dieser Art:

critical /system/modules/core/library/Contao/Database/Mysql.php * deprecatedFunctions * Line 47: @mysql_connect($strHost, $dbUser, $dbPass); * Line 51: @mysql_query("SET sql_mode=''", $this->resConnection); ...

Page 42: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 10

PHP 7 Migration Assistant Report (MAR)Ausgabe einer Prüfung:

Report located at: /php7mar/reports/2016-08-18 22.33.08 ModulePersonalData.md

Darin im Markdown Format sind Meldungen dieser Art:

critical /system/modules/core/modules/ModulePersonalData.php * variableInterpolation * Line 72: ` $this->$callback[0]->$callback[1]();`

Page 43: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 11

PHP 7 Migration Assistant Report (MAR)Weitere Informationen auf GitHub: Alexia/php7mar

Installationen sind über Composer und Download/Clone möglich.

Page 44: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 12

Static analyzer for PHP (Phan)Phan ist ein statischer Code-Analyzer, von Rasmus Lerdorf insLeben gerufen, der problematische Code-Stellen aufdeckt. DiePrüfung auf PHP 5 / PHP 7 Kompatibilität ist dabei nur ein kleinerTeil der Tests.

Page 45: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 13

Static analyzer for PHP (Phan)Ausgabe einer Prüfung: (Contao 3.2.0 in .../core/)

./classes/Ajax.php:155 PhanTypeMismatchArgumentInternal Argument 1 (prefix) is int but \uniqid() takes string ./classes/Backend.php:432 PhanTypeMismatchReturn Returning type null but getBackendModule() is declared to return string ./library/Contao/Controller.php:794 PhanCompatiblePHP7 Expression may not be PHP 7 compatible ./library/Contao/User.php:246 PhanCompatiblePHP7 Expression may not be PHP 7 compatible

Im Vergleich zu den beiden anderen Tools wird bezüglich PHP 7sehr wenig gefunden, z.B. wurde die Klasse "String" nichtbeanstandet.

Page 46: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

10 . 14

Static analyzer for PHP (Phan)Weitere Informationen auf GitHub: etsy/phan

Installationen sind über Composer und Download/Clone möglich.

Achtung: PHan benötigt selbst PHP 7 und die PHP Erweiterung"ast": nikic/php-ast

Page 47: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

11 . 1

LinklisteInformationen zur Migration:

Migrating from PHP 5.6.x to PHP 7.0.x (php.net)Migrating from PHP 7.0.x to PHP 7.1.x (php.net)Mit PHP 7 wird das Internet schneller

Reporting Tools für die Kommandozeile:

PHP 7 Compatibility Checker - php7ccPHP 7 Migration Assistant Report (MAR)Static analyzer for PHP

Interaktives Tutorial:

php7-tutorial.com

Page 48: PHP 7 IST DA 1 . 1 PHP 7 IST DA Glen Langer Contao Camp 2016 in Nürnberg Version: 1.2.0 vom 10.02.2017 (Bild: PHP.net) Slides erstellt mit der Erweiterung "contao-reveal-js-theme"

12 . 1

DANKE!

 

Aktuelle Version dieser Folien auf: docs.contao.ninja

(auch als PDF und später auch als Video)