PHP 8.2: Added imap_is_open
function
The IMAP extension in PHP 8.2.1 adds a new function named imap_is_open
, that returns whether a given IMAP\Connection
object is open or not.
Prior to adding this function, there was no way to determine if an IMAP\Connection
object is open. Attempting to use a closed object results in a \ValueError
exception, so the new imap_is_open
function provides a way to check a given connection object without having to use a try
/catch
block.
imap_is_open
is only available in PHP 8.2.1 later Note that theimap_is_open
function was added in PHP 8.2.1. This function does not exist in PHP 8.2.0.
imap_is_open
function synopsis
function imap_is_open(IMAP\Connection $imap): bool {}
imap_is_open
function is declared in the global namespace.
User-land PHP Implementation
Because the imap_is_open
function returns internal object data, it is not possible to port this function to older PHP versions. However, because all IMAP functions that accept an IMAP\Connection
object throws an exception, a close implementation in user-land PHP with the help of imap_ping
function might be the second best solution.
if (!function_exists('imap_is_open')) {
function imap_is_open(IMAP\Connection $imap): bool {
try {
imap_ping($imap);
return true;
}
catch (\ValueError $exception) {
return false;
}
}
}
Backwards Compatibility Impact
imap_is_open
is a new function declared by the IMAP extension in the global namespace. Unless a PHP application declares a function with the same name in the global namespace, this change should not introduce any compatibility issues.
While not being the same, it is possible to port a similar (but not identical in functionality) to older PHP versions. Otherwise, catching the \ValueError
exceptions is the viable cross-version compatible approach.
Related Changes
- PHP 8.1: IMAP:
imap
resources areIMAP\Connection
class objects - PHP 8.4: IMAP extension moved from PHP Core to PECL
- PHP's resource to object transformation