That’s actually the thing that you can’t use PDO::ATTR_STATEMENT_CLASS with 
persistent PDO.

To make it possible to have persistent PDO with custom PDOStatement you should 
have:
1) custom `CustomPDO implements PDOInterface` which will be somewhat proxy to 
PDO instance
2) custom `CustomPDOStatement implements PDOStatementInterface` which will be 
returned from CustomPDO::prepare and will have our additional logic + some 
stuff for persistence.

And in our userland code we can have type hints like `someMethod(PDOInterface 
$pdo)` or `someMethod(PDOStatementInterface $stmt)` 

I hope it explains a bit how interfaces could help here.



> On Jul 31, 2017, at 2:17 PM, Dan Ackroyd <dan...@basereality.com> wrote:
> 
> On 31 July 2017 at 08:21, Andrew Nester <newaltgr...@bk.ru> wrote:
>> 
>> when we are using persistent PDO we can’t use PDO::ATTR_STATEMENT_CLASS and
>> return our custom PDOStatement class
>> 
>> But just implementing PDOInterface and PDOStatementInterface will allow us 
>> to implement
>> this and have proper type hints in userland code.
> 
> Are you sure having interfaces would change this?
> 
> I would assume you can't use PDO::ATTR_STATEMENT_CLASS with persistent
> PDO due to a limitation of the implementation internal to PDO, rather
> than anything to do with what sub-classes what.
> 
> Could you post a working example of being able to set
> PDO::ATTR_STATEMENT_CLASS with persistent PDO?
> 
> cheers
> Dan

Reply via email to