Re: How to detect classes with a count_elements handler in userland?
| From: | Joe Watkins | Date: | Thu, 17 Nov 2016 07:30:40 +0000 |
| Subject: | Re: How to detect classes with a count_elements handler in userland? | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-96942@lists.php.net to get a copy of this message | ||
Morning,
Just to chime in ... can you split the PR into the RFC, and the new thing
please.
Just another question on how we could make objects that have count_elements
(which is in object handlers) implement an interface on the class entry
(which is detached from handlers) ?
I'm sure it's doable, but it doesn't look very straight forward, some kind
of hacking in instanceof maybe ... not sure ...
Cheers
Joe
On Wed, Nov 16, 2016 at 9:02 PM, Nikita Popov <nikita.ppv@gmail.com> wrote:
> On Mon, Nov 14, 2016 at 2:22 PM, Christoph M. Becker <cmbecker69@gmx.de>
> wrote:
>
> > On 13.11.2016 at 22:10, Craig Duncan wrote:
> >
> > >> How about just making those classes implement the interface instead?
> > >
> > > Christoph pointed out that there may be classes in extensions that use
> > > count_elements.
> >
> > Furthermore, letting those classes implement Countable could break BC.
> >
>
> How would this break BC?
>
> SXE even already has a count() method, and count_elements respects
> overrides of that method. Clearly SXE is supposed to implement Countable,
> it was simply forgotten.
>
> > Also it would make userland code simpler:
> > > is_countable($thing)
> > > vs
> > > is_array($thing) || $thing implements \Countable
> >
> > Good catch!
> >
> > Note that Craig has added is_countable() to PR #2185 (which implements
> > the RFC). In my opinion, that is okay, but if anybody has objections,
> > we probably need another RFC.
> >
>
> This should be done as a separate change IMHO.
>
> Nikita
>