Re: [Request][Discussion] Introduce interfaces PDOInterface and PDOStatementInterface

From: Date: Thu, 15 Feb 2018 16:53:19 +0000
Subject: Re: [Request][Discussion] Introduce interfaces PDOInterface and PDOStatementInterface
References: 1 2 3 4 5 6 7 8 9 10 11  Groups: php.internals php.internals 
Request: Send a blank email to internals+get-101878@lists.php.net to get a copy of this message
Am 06.08.2017 um 17:12 schrieb Andrew Nester:
6 авг. 2017 г., в 16:30, Dan Ackroyd <danack@basereality.com> написал(а): Andrew Nester wrote:
I am thinking about writing an RFC for this and continue discussion there. Will it be a good idea?
You're apparently not very good at listening to suggestions, so I'll be more direct. I think you're wasting people's time until you actually try seeing if PDO can be made to work with userland classes or not. The next step should be you (or anyone else) attempting to make the required changes to PDO to make it work, to discover what changes would be needed to allow using userland classes. If it isn't known what is needed to do to support it working, there is no point raising the RFC. Johannes Schlüter wrote:
The actually question is: Why not?
My understanding is that some of the internal code that calls userland functions and methods is basically bogus. I had a PR (which I haven't had the energy to get round to sorting out) to make the SPL call userland constructors correctly: https://github.com/php/php-src/pull/1196 My surprise level would be zero, if there were similar issues in PDO instantiating user classes, or other issues like the internal code accessing properties directly without going through method access. On the other hand, it might 'just work'. cheers Dan Ack
Thanks for your feedback, I appreciate this. Yes, I understand what you mean. Fixing using this PDO attribute will solve issue with persistent PDO and will allow to customize PDO in all cases. But what I want to suggest is more straightforward way to customize PDO behaviour and have proper type hints at the same time, because at my opinion using PDO attributes for customization is not very straightforward. I shown you some examples of use cases of these interfaces. As I think example from Doctrine DBAL shows that this might be useful. Let me know if you would like to see some others. I would like to hear some arguments why my proposed solution will not work or what exactly wrong with interfaces proposed and solution in general. Thanks in advance.
Let me revive this thread. I submitted bug #74957 and therefore I am in favor of the interfaces. My original motivation for the bug report was having a custom implementation which would be able to catch from the original PDO "MySQL server has gone away" and broken pipes, arising from idle connections being reused after a while. This not only happens in mostly idle daemons, but could also happen in this circumstance: 1. two connections are opened: log and work. 2. log connection is used. 3. work connection is used, blocking for several minutes. 4. log connection is used again. Result is broken pipe for the log connection. Now, I'm not too sure if the custom PDO implementation will help for this use case (catching broken pipes), because in one app instance PDO triggers an error and in another instance it causes a shutdown. Same app version, both PHP 7.1. The interfaces would still be a nice addition. They provide a good basis for experimentation. They allow general straight forward customization of PDO, i.e. not having to find out about the arcane and funny looking customization method PDO:: ATTR_STATEMENT_CLASS, which is also restricted to PDOStatement customization. Best regards Aljosha

« previous php.internals (#101878) next »