Open
Description
A long term project is to move all extension resources to objects as they are all in all better.
This issue aims to list the remaining usages of resources within php-src
Related RFC: https://wiki.php.net/rfc/resource_to_object_conversion
PHP 8.0:
- cURL Convert CURL resources to objects php-src#5402
- enchant php/php-src@cd3e04d
- GD, GdImage [WIP] GD Resources -> Objects php-src#4714
- OpenSSL Convert OpenSSL resources to objects php-src#5860
- OpenSSL X.509
- OpenSSL X.509 CSR
- OpenSSL key
- shmop Convert shmop resources to opaque objects php-src#5537
- sockets Convert resources to objects in ext/sockets php-src#5900
- Socket
- AddressInfo
- sysvmsg Convert resource to object in Sysvmsg php-src#5546
- sysvsem Convert resource to object in ext/sysvsem php-src#5508
- sysvshm Convert resource to object in Sysvshm extension php-src#5499
- XML - Convert ext/xml to use object instead of resource php-src#3526
- XML-RPC Convert resource to object in XML-RPC extension php-src#5457
- XMLWriter - Change XMLWriter resources to objects php-src#4706
- ZIP Deprecate the procedural API of ext/zip php-src#5746
- ZLIB: Convert resources to objects in ext/zlib php-src#5680
PHP 8.1:
- fileinfo Convert file_info resources to objects php-src#5987
- FTP: le_ftpbuf Convert FTP connection resource to an opaque object php-src#5945
- GD: le_gd_font php/php-src@bc40bce
- pspell: le_pspell, le_pspell_config php/php-src@bd12c94
- IMAP: le_imap Convert IMAP resource to object php-src#6418
- LDAP: le_link, le_result, le_result_entry (Convert resources to objects in ext/ldap php-src#6770)
- pgsql: le_link, le_lofp (Convert resources to objects in ext/pgsql php-src#6791) - le_string (php/php-src@f26047f)
Scheduled for PHP 8.4:
- ODBC: le_result, le_conn, lepconn (Migrate ext/odbc resources to opaque objects php-src#12040)
- SOAP: le_sdl, le_url, le_typemap (Migrate ext/soap resources to objects php-src#14121, Migrate SOAP table resource to array php-src#14174)
- DBA: le_db, le_pdb (Migrate ext/dba resources to objects php-src#14239)
- com: le_istream, le_dispatch (No ext/com-dotnet resources php-src#14282)
Scheduled for PHP 9.0:
- proc: le_proc_open (Migrate resource returned by proc_open() to opaque object php-src#12098)
Remaining:
- stream (main/, ext/standard/) [libxml_set_streams_context() is also affected]
- file/dir streams: le_stream / le_pstream
- context: le_stream_context
- filter: le_stream_filter
- Bucket API: le_bucket / le_bucket_brigade
Persistent resources that are only used internally and not exposed to userland:
- MySQLi: le_pmysqli
- PDO: le_ppdo
- PGSQL: le_plink
- ODBC: le_pconn
- DBA: le_pdb