Re: [Discuss] Add PDO disconnect() and isConnected()
| From: | Andrey Andreev | Date: | Tue, 30 Sep 2025 14:42:30 +0000 |
| Subject: | Re: [Discuss] Add PDO disconnect() and isConnected() | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-128743@lists.php.net to get a copy of this message | ||
On Tue, Sep 30, 2025 at 4:56 PM Kamil Tekiela <tekiela246@gmail.com> wrote:
> I find this proposal to be a backwards step in the age when we are
> moving away from resources and their explicit closure. We have
> disabled this in PHP 8.0 for curl_close(), imagedestroy(),
> openssl_pkey_free(), shmop_close() and xml_parser_free(). Sure,
> mysqli_close() still works, but the whole extension is mostly a
> historical artefact and a bunch of bad design choices due to what that
> extension is (quick replacement of mysql_* API). PDO was designed much
> better and it deliberately avoided the foot gun that is explicit
> connection closure. I really wish we would not introduce bad design
> choices into the language, and because of this, I wish this proposal
> were unsuccessful.
>
All of the foot gun examples you listed are such because that historic
design pattern *required* explicit resource frees, and they are foot guns
because it is easy to forget doing that.
Also, mysqli_close() is the only one that handles a stateful network
connection and not a local resource, which is a good reason why it still
works.
There are legitimate use cases where you may want to explicitly and
immediately close a network connection, even if PHP would do it eventually.
Cheers,
Andrey.