Signatur
Beschreibung
get_debug_type() liefert den Typ einer beliebigen Variable als aussagekräftigen String. Im Gegensatz zu gettype() werden dabei für Objekte der vollqualifizierte Klassenname (inkl. Namespace) zurückgegeben, und für anonyme Klassen ein beschreibender Bezeichner.
Für skalare Typen und bekannte Strukturen verwendet die Funktion die in PHP 8 eingeführten nativen Typnamen: int, float, bool, string, null, array und resource. Das unterscheidet sie deutlich von gettype(), das z. B. integer statt int zurückgibt.
Besonders nützlich ist get_debug_type() beim Werfen von Typfehlern in eigenen Bibliotheken oder Frameworks: Man kann präzise benennen, was tatsächlich übergeben wurde, ohne selbst zwischen Objekt, Primitivtyp und anonymer Klasse unterscheiden zu müssen.
Für anonyme Klassen wird ein String nach dem Muster class@anonymous mit Datei- und Zeilenangabe zurückgegeben, was die Fehlersuche erheblich vereinfacht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value Pflicht | mixed | Die Variable, deren Typ ermittelt werden soll. Akzeptiert jeden PHP-Typ. |
Rückgabewert
null die nativen PHP 8-Typnamen (int, float, bool, string, null, array, resource).Beispiele
Grundlegende Typermittlung verschiedener Werte
<?php
var_dump(get_debug_type(42)); // int
var_dump(get_debug_type(3.14)); // float
var_dump(get_debug_type(true)); // bool
var_dump(get_debug_type('Hallo')); // string
var_dump(get_debug_type(null)); // null
var_dump(get_debug_type([1, 2, 3])); // array
$fp = fopen('php://temp', 'r');
var_dump(get_debug_type($fp)); // resource (stream)
fclose($fp);
Objekte und anonyme Klassen in Fehlermeldungen
<?php
namespace App\Http;
class Request {}
function verarbeiteRequest(mixed $input): void {
if (!$input instanceof Request) {
throw new \InvalidArgumentException(
'Erwartet: App\\Http\\Request, erhalten: ' . get_debug_type($input)
);
}
echo "Request verarbeitet.";
}
// Bekannte Klasse
$request = new Request();
echo get_debug_type($request) . "\n"; // App\Http\Request
// Anonyme Klasse
$anon = new class {};
echo get_debug_type($anon) . "\n"; // class@anonymous /path/to/file.php:20$0
// Typfehler-Beispiel
try {
verarbeiteRequest('kein-request');
} catch (\InvalidArgumentException $e) {
echo $e->getMessage();
}
// Wichtig · Fallstricke
Unterschied zu gettype(): gettype() gibt veraltete Bezeichnungen zurück (z. B. integer, double, NULL), während get_debug_type() die modernen PHP-Typnamen verwendet und damit besser zu Typdeklarationen und Fehlermeldungen passt.
Nicht für Typprüfungen verwenden: Die Funktion ist ausschließlich für Debugging und Fehlermeldungen gedacht. Für echte Typprüfungen sollte man instanceof, is_int(), is_string() usw. bevorzugen, da diese verlässlicher und performanter sind.
Anonyme Klassen: Der zurückgegebene String für anonyme Klassen enthält Dateiname und Zeilennummer und kann sich zwischen PHP-Versionen ändern – nicht für programmatische Vergleiche geeignet.