On 11.02.2021 at 05:57, Brent Roose wrote:

> The chagelog for PHP 8.1 lists the two following changes:
>
>
> - Fileinfo:
>   . The fileinfo functions now accept and return, respectively, finfo objects
>     instead of resources.
>
> - IMAP:
>   . The IMAP functions now accept and return, respectively, IMAPConnection 
> objects
>     instead of resources.
>
> I suppose these changes are part of the move away from "resources everywhere" 
> ? I was wondering whether these function will still accept resource objects 
> in PHP 8, or if support for them is completely removed.
>
> I tried searching externals.io <http://externals.io/> for a previous 
> discussion but could only find https://externals.io/message/111297#111298 
> <https://externals.io/message/111297#111298>

Yes, these changes fall under the general resource to object conversion
(which is IMO generally a very good move), and the respective resources
are completely removed.  However, it seems that the incompatibility is
not only wrt. is_resource() checks, which can easily be resolved (and
may not be an issue for some code bases), but also regarding conversion
to int.  It might be sensible to implement cast_object handlers for
those classes, which may be deprecated.

The SSH2 extension would need particular attention in this regard, since
it deliberately uses resource to int/string conversion for its wrappers,
and even looks up the resources from the regular_list[1].

[1]
<https://github.com/php/pecl-networking-ssh2/blob/93265d71bdeb23350e8320126c7949ed791310df/ssh2_fopen_wrappers.c#L26-L36>

--
Christoph

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to