Verwenden von declare strict_types in PHP

In PHP gibt es die Möglichkeit den type hint beim Abruf von Methoden und Funktionen für die Eingabe- aber auch die Rückgabeparameter festzulegen. Dabei gibt es allerdings noch geringfügige Unschärfen, da diese bei skalaren Datentypen nicht restriktiv verwendet werden.

Das bedeutet, wenn eine Zahl als String übergeben wird und der type hint ein Integer verlangt, dass dieser Aufruf dennoch valide ist.

<?php

function hello(integer $world) {
  echo $world;
}

hello("1000");

Dies gilt auch für andere Varianten. Da dies formal gesehen jedoch falsch ist kann eine absolute korrekte Typdeklaration und -überprüfung dessen erzwungen werden. Dafür wird zu Beginn der betroffenen PHP-Datei folgender Aufruf abgesetzt:

<?php

declare(strict_types=1);

function hello(integer $world) {
  echo $world;
}

hello("1000");

Damit ist es nun mit dem oben genannte Beispiel nicht mehr möglich das Skript auszuführen und es folgt in diesem Beispiel beim Abruf der Methode eine TypeError Fehlermeldung:

TypeError: Argument 1 passed to hello() must be of the type int, string given

Hierbei ist es wichtig anzuerkennen, dass diese Defintion nur für die aktuelle Datei gilt. Dieses declare kann nicht global gesetzt und Projektübergreifend verwendet werden. Nicht auszudenken wie sich diese Einstellung auf vendor-Produkte anderer Projekte auswirken würde.

Es macht meiner Einschätzung nach Sinn diese Einstellung in Klassen zu verwenden bei denen eine ganz klare Typisierung für z.B. eine sichere Berechnung von Zahlen notwendig ist. Pauschal diese Definition in jede bestehende Klasse zu integrieren lehne ich persönlich aus Gründen der besseren Lesbarkeit und der damit verbunden Wartung ab. Bei neuen Klassen hingegen macht dies schon Sinn.


Hat Dir mein Beitrag gefallen?

Unterstütze meine Arbeit und werde noch heute Patreon!

Veröffentlicht von

Sebastian

Als Softwareschmied entwickelt Sebastian seit zwanzig Jahren Individualsoftware mit den Schwerpunkten PHP und MySQL auf diversen Linux-Systemen. Er hat eine pfiffige Frau sowie drei quirlige Söhne, fährt gerne Fahrrad und liebt handwerkliche Arbeiten die im häuslichen Umfeld so anfallen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.