PHP Australia Conference 2015

get_resource_type

(PHP 4 >= 4.0.2, PHP 5)

get_resource_type Returns the resource type

Description

string get_resource_type ( resource $handle )

This function gets the type of the given resource.

Parameters

handle

The evaluated resource handle.

Return Values

If the given handle is a resource, this function will return a string representing its type. If the type is not identified by this function, the return value will be the string Unknown.

This function will return FALSE and generate an error if handle is not a resource.

Examples

Example #1 get_resource_type() example

<?php
// prints: mysql link
$c mysql_connect();
echo 
get_resource_type($c) . "\n";

// prints: file
$fp fopen("foo""w");
echo 
get_resource_type($fp) . "\n";

// prints: domxml document
$doc new_xmldoc("1.0");
echo 
get_resource_type($doc->doc) . "\n";
?>

add a note add a note

User Contributed Notes 5 notes

up
1
CertaiN
8 months ago
Try this to know behavior:

<?php
function resource_test($resource, $name) {
    echo
       
'[' . $name. ']',
       
PHP_EOL,
       
'(bool)$resource => ',
       
$resource ? 'TRUE' : 'FALSE',
       
PHP_EOL,
       
'get_resource_type($resource) => ',
       
get_resource_type($resource) ?: 'FALSE',
       
PHP_EOL,
       
'is_resoruce($resource) => ',
       
is_resource($resource) ? 'TRUE' : 'FALSE',
       
PHP_EOL,
       
PHP_EOL
   
;
}

$resource = tmpfile();
resource_test($resource, 'Check Valid Resource');

fclose($resource);
resource_test($resource, 'Check Released Resource');

$resource = null;
resource_test($resource, 'Check NULL');
?>

It will be shown as...

[Check Valid Resource]
(bool)$resource => TRUE
get_resource_type($resource) => stream
is_resoruce($resource) => TRUE

[Check Released Resource]
(bool)$resource => TRUE
get_resource_type($resource) => Unknown
is_resoruce($resource) => FALSE

[Check NULL]
(bool)$resource => FALSE
get_resource_type($resource) => FALSE
Warning:  get_resource_type() expects parameter 1 to be resource, null given in ... on line 10
is_resoruce($resource) => FALSE
up
-2
CertaiN
8 months ago
Try this to know behavior:

<?php
function resource_test($resource, $name) {
    echo
       
'[' . $name. ']',
       
PHP_EOL,
       
'(bool)$resource => ',
       
$resource ? 'TRUE' : 'FALSE',
       
PHP_EOL,
       
'get_resource_type($resource) => ',
       
get_resource_type($resource) ?: 'FALSE',
       
PHP_EOL,
       
'is_resoruce($resource) => ',
       
is_resource($resource) ? 'TRUE' : 'FALSE',
       
PHP_EOL,
       
PHP_EOL
   
;
}

$resource = tmpfile();
resource_test($resource, 'Check Valid Resource');

fclose(tmpfile());
resource_test($resource, 'Check Released Resource');

$resource = null;
resource_test($resource, 'Check NULL');
?>

It will be shown as...

[Check Valid Resource]
(bool)$resource => TRUE
get_resource_type($resource) => stream
is_resoruce($resource) => TRUE

[Check Released Resource]
(bool)$resource => TRUE
get_resource_type($resource) => Unknown
is_resoruce($resource) => FALSE

[Check NULL]
(bool)$resource => FALSE
get_resource_type($resource) => FALSE
Warning:  get_resource_type() expects parameter 1 to be resource, null given in ... on line 10
is_resoruce($resource) => FALSE
up
-3
jdhawk _at_ gmail
8 years ago
In PHP5 (on Linux), the above example identifies the "file" handler as a 'stream', not 'file'.

This can be particularly worrisome if you're trying to determine the type of stream using this function.

The alternative is to use <?php stream_get_meta_data() ?>, which returns an array containing "stream_type (string) - a label describing the underlying implementation of the stream."
up
-3
hessodreamy at gmail dot com
7 years ago
Furthermore, this function returns 'stream' on php 4.3 on windows & linux.
You if you want to differentiate between a file resource and other stream resources, as stated before stream_get_meta_data() gives you an array which, on my system, contains the following elements which might suggest a file handle:
[wrapper_type] => plainfile
[stream_type] => STDIO

However I've only compared this to a stream from a url, so I include this only as a suggestion.
up
-5
avp200681 at gmail dot com
3 years ago
This function will generate an error and return NULL instead FALSE in the next example:

<?php

$var
= 3;
var_dump(get_resource_type($var));

?>
To Top