Extending internal classes like mysqli

php.internals

Bert Slagter

22 years ago
Good afternoon! Could anyone explain what we're supposed to do with internal classes like the mysqli class. In an article on Zend.com (http://www.zend.com/php5/articles/php5-mysqli.php) the fact that the object oriented interface can be extended is brought as a major feature. But it seems that it's impossible to extend the mysqli class, see my bug at http://bugs.php.net/bug.php?id=28430. What I want is this. I need some custom logging for my database layer. So I want to extend the mysqli class and overwrite one or two methods and add some custom methods. Shouldn't I be able to just do: class foo extends mysqli { } $foo = new foo(); Right now this doesn't work - the variable $foo->thread_id isn't available for example. Is this intended behaviour? Bert Slagter

Marcus Börger

22 years ago
Hello Bert, some of the internal classas cannot be extended and unfortunatley they are not marked as 'final' right now. For you that means you need to extend it by a proxy class that reimplements the original class protocol and uses the original class as a property. Friday, May 21, 2004, 2:52:08 PM, you wrote:
> Good afternoon!
> Could anyone explain what we're supposed to do with internal classes > like the mysqli class.
> In an article on Zend.com > (http://www.zend.com/php5/articles/php5-mysqli.php) the fact that the > object oriented interface can be extended is brought as a major feature. > But it seems that it's impossible to extend the mysqli class, see my bug > at http://bugs.php.net/bug.php?id=28430.
> What I want is this. I need some custom logging for my database layer. > So I want to extend the mysqli class and overwrite one or two methods > and add some custom methods.
> Shouldn't I be able to just do:
> class foo extends mysqli > { > }
> $foo = new foo();
> Right now this doesn't work - the variable $foo->thread_id isn't > available for example.
> Is this intended behaviour?
> Bert Slagter
-- Best regards, Marcus mailto:helly@php.net

Bert Slagter

22 years ago
Hi Marcus, Thanks for your clear answer :). What are the future plans concerning this issue? Will I be able to just extend this class as I want? For which version is that planned? The answers to these questions heavily influence design choices I have to make now. Oh, and I'm curious why the article on Zend.com mentions that extendability is a key feature of mysqli. Even though it cannot be extended.. :) Bert Marcus Boerger wrote:

Bert Slagter

22 years ago
The last few days I've been working with mysqli, and every hour I work with it, my worry grows. It's far from finished: no good documentation in the ext dir, below average online documentation, partly implemented object orientation (no destructor, no extensions allowed, etc). Is there any chance this will get better soon? I heard on the PHP Conference in Amsterdam that both PHP 5 and MySQL 4.1 are expected to be final somewhere this summer, so I'd expect some improvement in this extension soon ;) Bert Bert Slagter wrote:

George Schlossnagle

22 years ago
On May 25, 2004, at 8:47 PM, Bert Slagter wrote:
> The last few days I've been working with mysqli, and every hour I work > with it, my worry grows. It's far from finished: no good documentation > in the ext dir, below average online documentation, partly implemented > object orientation (no destructor, no extensions allowed, etc). > > Is there any chance this will get better soon? I heard on the PHP > Conference in Amsterdam that both PHP 5 and MySQL 4.1 are expected to > be final somewhere this summer, so I'd expect some improvement in this > extension soon ;)
Congrats! I hear we're accepting patches now. George