試試這個來了解行為
<?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_resource($resource) => ',
is_resource($resource) ? 'TRUE' : 'FALSE',
PHP_EOL,
PHP_EOL
;
}
$resource = tmpfile();
resource_test($resource, '檢查有效的資源');
fclose($resource);
resource_test($resource, '檢查已釋放的資源');
$resource = null;
resource_test($resource, '檢查 NULL');
?>
它會顯示成...
[檢查有效的資源]
(bool)$resource => TRUE
get_resource_type($resource) => stream
is_resource($resource) => TRUE
[檢查已釋放的資源]
(bool)$resource => TRUE
get_resource_type($resource) => Unknown
is_resource($resource) => FALSE
[檢查 NULL]
(bool)$resource => FALSE
get_resource_type($resource) => FALSE
警告:get_resource_type() 預期參數 1 為資源,但在 ... 的第 10 行給定 null
is_resource($resource) => FALSE