Hello Etienne,

Wednesday, July 2, 2008, 1:57:06 PM, you wrote:

> Hi,

> I'd like to fix the resolution order of Countable::count() vs
> count_elements handler.
> Currently, things are done like this:

> 1) check if the object implements countable, if so, call it's method
> 2) if not, check if count_elements handler is defined, if so, use it.

> This is a problematic order of resolution, and I'd like to inverse it.

> Why? Because :

> 1) it is inconsistent with other handlers
> 2) it makes it impossible to be userland friendly while saving a
> method call when it's possible.

Sounds good to me and while you're at it. You can get rid of HAVE_SPL
checks as SPL is always present now.

> Currently, there are 3 possibilities:

> 1) the internal class doesn't use count_elements handler
->> No problem with the change

> 2) the internal class uses only the handler
->> It's not userland friendly, the change won't help, so it needs to
> be fixed anyway

> 3) both the handler and the method are used
->> the handler was never called directly, such classes will need a fix
> after that resolution order change.

Sounds like the interface_gets_implemented handler of the interface should
check that the count_elements handler is not set or is already set to the
same value anyway and throw an exception/issue an error otherwise.

> Userland classes are not affected.
> I can and will take care of every problems occuring in classes in
> php-src (2 or 3, mostly SPL).

> Patches and details:
> http://wiki.php.net/rfc/array_count_handlers


> Regards

> -- 
> Etienne Kneuss
> http://www.colder.ch

> Men never do evil so completely and cheerfully as
> when they do it from a religious conviction.
> -- Pascal




Best regards,
 Marcus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to