[RFC] is_countable

  101648
January 21, 2018 18:01 carusogabriel34@gmail.com (Gabriel Caruso)
Hello, dear Internals.

First, thanks to Niklas Keller for giving me permission to write an *RFC*!
After that, I like to propose and discuss a new function for PHP 7.x
(current 7.3): is_countable.

*RFC*: https://wiki.php.net/rfc/is-countable.

I tried to describe everything there, but of course, let's discuss
everything that should be improved to get this functions merged into the
Core.

Thanks,



-- 
Gabriel Caruso
  101649
January 21, 2018 18:43 levim@php.net (Levi Morrison)
On Sun, Jan 21, 2018 at 11:01 AM, Gabriel Caruso
<carusogabriel34@gmail.com> wrote:
> Hello, dear Internals. > > First, thanks to Niklas Keller for giving me permission to write an *RFC*! > After that, I like to propose and discuss a new function for PHP 7.x > (current 7.3): is_countable. > > *RFC*: https://wiki.php.net/rfc/is-countable. > > I tried to describe everything there, but of course, let's discuss > everything that should be improved to get this functions merged into the > Core.
I added some comments on the implementation. I have no objection to the RFC itself. It is small, useful, and relates to a core language feature which in my opinion makes it a good candidate for our standard library.
  101650
January 22, 2018 09:52 php@duncanc.co.uk (Craig Duncan)
Hi Gabriel,

I proposed a similar function at the time of introducing the warning, but
it doesn't look like I got around to creating an RFC for it:
https://github.com/php/php-src/pull/2206/files

During this work we realised that objects don't have to implement the
'\Countable' interface to be successfully handled by 'count()',
internal/extension classes can implement a 'count_elements' handler and
ignore the interface.

I'd suggest that 'is_countable()' should be consistent with 'count()'.

Thanks,
Craig
  101652
January 22, 2018 12:34 johannes@schlueters.de (Johannes =?ISO-8859-1?Q?Schl=FCter?=)
Hi,

On So, 2018-01-21 at 18:01 +0000, Gabriel Caruso wrote:
> After that, I like to propose and discuss a new function for PHP 7.x > (current 7.3): is_countable. > > *RFC*: https://wiki.php.net/rfc/is-countable.
The primary place for this imo should be reflection. If there is high demand we could also add a shortcut function like proposed (no strong opinion on this either way from my side) Of course I notice that the current reflection can't cover all the cases you want to cover, so maybe it might be interesting to extend reflection with something which works on all variables/zval and wraps all the is_* functions. johannes
  101656
January 22, 2018 16:45 carusogabriel34@gmail.com (Gabriel Caruso)
Hi Johannes, thanks for your feedback!

Can I ask you to elaborate (or maybe share a link where can I study and
improve) more about the Reflection part?

Sorry if it’s sounds trivial, is because I’m new to internals 😄
Em seg, 22 de jan de 2018 às 10:34, Johannes Schlüter <
johannes@schlueters.de> escreveu:

> Hi, > > On So, 2018-01-21 at 18:01 +0000, Gabriel Caruso wrote: > > After that, I like to propose and discuss a new function for PHP 7.x > > (current 7.3): is_countable. > > > > *RFC*: https://wiki.php.net/rfc/is-countable. > > The primary place for this imo should be reflection. If there is high > demand we could also add a shortcut function like proposed (no strong > opinion on this either way from my side) > > Of course I notice that the current reflection can't cover all the > cases you want to cover, so maybe it might be interesting to extend > reflection with something which works on all variables/zval and wraps > all the is_* functions. > > johannes > > -- Gabriel Caruso
  101657
January 22, 2018 17:15 levim@php.net (Levi Morrison)
On Mon, Jan 22, 2018 at 5:34 AM, Johannes Schlüter
<johannes@schlueters.de> wrote:
> Hi, > > On So, 2018-01-21 at 18:01 +0000, Gabriel Caruso wrote: >> After that, I like to propose and discuss a new function for PHP 7.x >> (current 7.3): is_countable. >> >> *RFC*: https://wiki.php.net/rfc/is-countable. > > The primary place for this imo should be reflection.
You did not provide any justification. As you do so keep in mind a lot of code is going to look like: if (is_countable($arg)) { /* take a different code path, such as pre-allocating storage */ } This is not an easily reflectable thing because it's based on an argument which may not even be an object type. Additionally we have a well-established convention of `is_*` function for types specifically known to the engine as is the case here.
  101901
February 22, 2018 18:31 carusogabriel34@gmail.com (Gabriel Caruso)
> > Hello, dear Internals. > > First, thanks to Niklas Keller for giving me permission to write an *RFC*! > After that, I like to propose and discuss a new function for PHP 7.x > (current 7.3): is_countable. > > *RFC*: https://wiki.php.net/rfc/is-countable. > > I tried to describe everything there, but of course, let's discuss > everything that should be improved to get this functions merged into the > Core. > > Thanks, > > -- > Gabriel Caruso >
Hello again, dear internals. One month since the `is_countable` RFC had open. We have add the support for `count_elements` (thanks @duncan3dc), so we can use this function with internal classes as well. There's only one open discussion from @morrisonlevi, but I do believe is related to arginfo return type, which isn't used in the core yet, so I kept without it. Is something else we should do it, or I can open the voting next week (26/02)? -- Gabriel Caruso