In diesem Artikel stelle ich diverse PHP 7 Neuerungen bzw. Änderungen vor. Es hat sich einiges getan in der neuen PHP Version und ein paar interessante Fälle möchte ich hier vorstellen.
Alte Constructor Deklaration läuft aus
In PHP 4 musste der Konstruktor einer Klasse noch denselben Namen wie die Klasse selbst tragen. Ab PHP 5 kam dann die Deklaration mit _construct() ins Spiel. Bis zur PHP Version 5.6 war die alte Deklaration auch weiterhin noch zulässig. Mit PHP 7 wird diese Deklaration als deprecated angesehen und in einer späteren Version soll sie dann vollends verschwinden.
Zur Veranschaulichung hier ein Beispiel:
class Person
{
public function __construct()
{
echo 'Ich bin der Konstruktor.';
}
public function person()
{
echo 'Ich bin eine normale Methode.';
}
}
$person = new Person();
$person->person();
Beim Ausführen dieses Beispielcodes sieht man deutlich, dass die __construct() Methode als Konstruktor getriggert wird und die Funktion person() eine normale Klassenmethode ist.
Konstante Arrays
Seit PHP 5.6 lassen sich konstante Arrays mit dem reservierten Bezeichner const initialisieren.
const LANG = [ 'EN', 'FR', 'DE' ];
Mit PHP 7 kam als neue Möglichkeit hinzu, ein konstantes Array mit der Funktion define() zu initialisieren.
define(LANG, [ 'EN', 'FR', 'DE' ]);
Mehrere “default” in einer Switch Anweisung
Vor PHP 7 waren mehrere “default” in einer Switch Anweisung möglich, wie in dem folgenden Beispiel:
switch (true)
{
default:
echo 'Ich bin der erste default case.";
default:
echo 'Ich bin der zweite default case.";
}
Vor PHP 7 war dieser Code erlaubt. In PHP 7 würde er zu einem “fatal error” führen:
Fatal error: Switch statements may only contain one default clause in ...
Options Array für die session_start Funktion
For PHP 7 wurde eine Session mit der Funktion session_start() ohne irgendwelche Parameter gestartet. Die Einstellungen für Sessions wurden in der php.ini hinterlegt.
Seit PHP 7 kann man ein Array mit den Optionen für eine Session übergeben.
session_start(
['cookie_lifetime' => 3600, 'read_and_close' => true]
);
Über weitere Neuerungen und Änderungen werde ich berichten, sobald sie mir in der Praxis unterkommen.
Fragen oder Feedback zu diesem Artikel