Req #74957 [Opn]: Introduce interfaces PDOInterface and PDOStatementInterface
| From: | adambaratz@php.net | Date: | Thu, 20 Jul 2017 14:07:58 +0000 |
| Subject: | Req #74957 [Opn]: Introduce interfaces PDOInterface and PDOStatementInterface | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-210151@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74957&edit=1
ID: 74957
Updated by: adambaratz@php.net
Reported by: aljosha dot papsch at vinexus dot eu
Summary: Introduce interfaces PDOInterface and
PDOStatementInterface
Status: Open
Type: Feature/Change Request
Package: PDO Core
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
One way to approach this is by subclassing PDO and PDOStatement. You can use the PDO::
ATTR_STATEMENT_CLASS driver option to tell a PDO object which PDOStatement subclass to return from
PDO::prepare().
If you have a different use case in mind, an API change like this would require an RFC. There's
a description of the process here:
https://wiki.php.net/rfc/howto
Previous Comments:
------------------------------------------------------------------------
[2017-07-20 13:34:31] aljosha dot papsch at vinexus dot eu
Description:
------------
Classes PDO and PDOStatement do not implement any interface, making it harder to add custom
behaviour. For example, PDO does not handle reconnecting to database, which is an issue especially
in long running processes. The best shot at implementing this feature is creating custom behaviour
classes with the same methods as PDO/PDOStatement (most of it should just be adapter stuff).
Unfortunately the custom behaviour class cannot be used in functions which have PDO/PDOStatement
typehint, making them useless.
If PDO and PDOStatement implemented interfaces, it would be possible for the custom behaviour
classes to implement those interfaces as well, making them interchangeable. No changes needed in
callers of PDO/PDOStatement.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74957&edit=1