Re: Inconsistencies with constructors in SPL
| From: | Andrew Curioso | Date: | Mon, 16 May 2011 18:44:23 +0000 |
| Subject: | Re: Inconsistencies with constructors in SPL | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-52402@lists.php.net to get a copy of this message | ||
I like that idea and I like that it works for userland classes as well.
+1
Do you think it should throw a warning, notice, or -- as you both suggested
-- just silently succeed?
2011/5/16 Johannes Schlüter <johannes@schlueters.de>
> Hi,
>
> I|d actuallz suggest a different option:
>
> If a parent constructor is called but doesn't exist the engine should
> ignore this. The same goes for destructors.
>
> This solution would also work for userland classes.
>
> johannes
>
> On Mon, 2011-05-16 at 14:14 -0400, Andrew Curioso wrote:
> > So, I ran across bug #54631
> >
> > A fatal error is thrown if you try to call parent::__construct() from a
> > subclass
> > of SplObjectStorage.
> >
> > I was going to close it as "expected behavior" since that is pretty
> normal
> > if the parent class doesn't implement __construct().
> > Also, the docs don't list it as having a __construct() method.
> >
> > But then look at SplDoublyLinkedList (and a bunch of others). They are
> > documented
> > as having a __construct() method, yet it triggers a fatal error when you
> try
> > to call
> > "parent::__construct()" from a subclass' constructor .
> >
> > So it seems to me that there are two possible solutions:
> >
> > - Update the docs to remove ::__construct() for classes that don't have
> one.
> > - Make sure __construct() is implemented in all SPL classes * and update
> the
> > docs.
> >
> > * Even if it is empty.
> >
> > What's everyone thinking?
> >
> > I'd be more than happy to add the constructors to the code where needed,
> I
> > just
> > want to make sure that it is the right move first.
> >
> >
> > - Andrew
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>