Try this to know behavior:<?phpfunction 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 => TRUEget_resource_type($resource) => streamis_resoruce($resource) => TRUE[Check Released Resource](bool)$resource => TRUEget_resource_type($resource) => Unknownis_resoruce($resource) => FALSE[Check NULL](bool)$resource => FALSEget_resource_type($resource) => FALSEWarning: get_resource_type() expects parameter 1 to be resource, null given in ... on line 10is_resoruce($resource) => FALSE