Signatur
Beschreibung
get_resource_type() ermittelt den internen Typ einer Ressource und gibt ihn als lesbaren String zurück. Ressourcen sind spezielle PHP-Variablen, die Referenzen auf externe Objekte wie Datei-Handles, Datenbankverbindungen oder Bildverarbeitungs-Handles halten.
Der zurückgegebene String entspricht dem PHP-internen Ressourcentyp, z. B. stream für mit fopen() geöffnete Dateiströme, gd für GD-Bildressourcen oder mysql link für MySQL-Verbindungen (veraltet). Damit lässt sich zur Laufzeit prüfen, mit welcher Art von Ressource man es zu tun hat.
Die Funktion ist besonders nützlich beim Debuggen oder wenn eine Funktion verschiedene Ressourcentypen akzeptieren soll und intern zwischen diesen unterschieden werden muss. In neueren PHP-Versionen (ab PHP 8.0) werden viele ehemals als Ressourcen implementierte Objekte durch echte Klassen-Instanzen ersetzt; get_resource_type() ist daher vorwiegend für ältere Ressourcentypen relevant.
Wird eine bereits geschlossene Ressource übergeben, gibt die Funktion den String Unknown zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $resource Pflicht | resource | Die Ressource, deren Typ ermittelt werden soll. Es muss sich um eine gültige PHP-Ressource handeln. |
Rückgabewert
stream, gd oder curl. Ist die übergebene Ressource bereits geschlossen, wird Unknown zurückgegeben.Beispiele
Typ eines Datei-Handles ermitteln
<?php
$handle = fopen('php://temp', 'r+');
echo get_resource_type($handle); // stream
fclose($handle);
echo get_resource_type($handle); // Unknown
Typ einer cURL-Ressource prüfen
<?php
$ch = curl_init('https://example.com');
if (is_resource($ch) && get_resource_type($ch) === 'curl') {
echo 'Gültige cURL-Ressource erhalten.' . PHP_EOL;
curl_close($ch);
} else {
echo 'Kein cURL-Handle – möglicherweise PHP 8.0+ (CurlHandle-Objekt).' . PHP_EOL;
}
Verschiedene Ressourcentypen unterscheiden
<?php
function beschreibeRessource($res): string {
if (!is_resource($res)) {
return 'Kein gültiges Ressource-Handle.';
}
$typ = get_resource_type($res);
return match ($typ) {
'stream' => 'Dateistream / Netzwerkstream',
'gd' => 'GD-Bildobjekt',
'curl' => 'cURL-Session',
default => "Unbekannter Typ: $typ",
};
}
$fp = fopen('php://memory', 'r+');
echo beschreibeRessource($fp) . PHP_EOL;
fclose($fp);
echo beschreibeRessource($fp) . PHP_EOL;
// Wichtig · Fallstricke
PHP 8.0+: Viele Ressourcentypen wurden durch vollwertige Klassen ersetzt. So liefert curl_init() seit PHP 8.0 eine Instanz von CurlHandle statt einer Ressource. get_resource_type() schlägt für solche Objekte fehl; verwende stattdessen instanceof oder get_class(). Für zukunftssicheren Code empfiehlt es sich, is_resource() vor dem Aufruf zu prüfen und parallel auf Klassen-Instanzen zu testen.
Hinweis: Übergibt man einen Nicht-Ressource-Wert (seit PHP 8.0 erzeugt das einen TypeError), wird in älteren PHP-Versionen eine Warnung ausgelöst und false zurückgegeben – auch wenn der Rückgabetyp eigentlich string ist.