PHP: Symfony 5.1 kann mit Typed Properties umgehen

Das PHP-Framework erweitert in Version 5.1 die Gruppe der Validatoren und bringt Neuerungen für die HttpFoundation-Komponente.

Lesezeit: 1 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: AFANASEV IVAN/Shutterstock.com)

Von

Sensio Labs hat eine neue Version des PHP-Frameworks Symfony veröffentlicht. Symfony 5.1 hält zahlreiche neue Features bereit, darunter weitere Validatoren sowie Neuerungen für die HttpFoundation-Komponente.

Die Gruppe der bereits verfügbaren Validatoren (Email-, IP-Adress-, URL-Validator) ergänzt Symfony 5.1 unter anderen um den ExpressionLanguageSyntax-Validator sowie weitere neue Validatoren. Der Hostname-Validator beispielsweise prüft, ob der angegebene Wert als Hostname gültig ist. Der AtLeastOneOf-Validator lässt sich auf Methoden und Properties anwenden, um sicherzustellen, dass deren Werte mindestens eine der vorgegebenen Constraints erfüllen – das können sowohl die von Symfony bereitgestellten, als auch benutzerdefinierte Constraints sein.

Darüber hinaus hält Symfony 5.1 weitere Überarbeitungen für Validatoren bereit. Nähere Informationen dazu finden sich im zugehörigen Beitrag auf dem Symfony-Blog.

Das Update bringt einige Neuerungen für die Komponente HttpFoundation. Beispielsweise die Klasse InputBag, die von der Klasse ParameterBag ausgeht, hält mit dem Update Einzug in das PHP-Framework. ParameterBag gleicht einem objektorientierten Array, der verwandte Werte speichert und Methoden wie get(), set() und ähnliche bereitstellt. Für bestimmte Zwecke definiert Symfony spezialisierte ParameterBag-Klassen, wie FileBag für hochgeladene Dateien, ServerBag für HTTP-Headers usw. Die neu eingeführte Klasse InputBag verwaltet die vom Benutzer bereitgestellten Werte über $_GET, $_POST, $_REQUEST und weitere.

Typed Properties hielten mit PHP 7.4 Einzug in die Programmiersprache PHP. Mithilfe dieser Funktionen lassen sich Typen von Variablen bei der Deklaration definieren.

use Symfony\Component\HttpFoundation\Request;
class SomeClass
{
public int $id;
protected string $name;
private ?bool $logResult;
public Request $request;
// ...
}

Die Komponente PropertyInfo zieht Informationen über die Eigenschaften von PHP-Klassen unter Verwendung verschiedener Quellen, wie etwa Doctrine Metadata, PHP-Reflection, PHPdog config. Sensio Labs hat diese Komponente mit Symfony 5.1 überarbeitet. Das folgende Beispiel aus dem Symfony-Blog zeigt, wie sich Informationen sich aus den Typed Properties von PHP gewinnen lassen.

$info = $propertyInfo->getTypes(SomeClass::class, 'logResult');
// $info = [
// class Symfony\Component\PropertyInfo\Type (6) {
// private $builtinType => string(4) "bool"
// private $nullable => bool(true)
// private $class => NULL
// private $collection => bool(false)
// private $collectionKeyType => NULL
// private $collectionValueType => NULL
// }
// ]

Weiterführende Informationen zur Minor-Version finden sich in den Release Notes. Darüber hinaus stellt Sensio Labs auf dem Symfony-Blog eine Sammlung an Beiträgen über die einzelnen neuen Features der 5.1-Version zur Verfügung.

(mdo)