On Sun, 2014-10-26 at 18:37 -0700, Stas Malyshev wrote:
> Hi!
> 
> I would like to present to your attention an RFC about using object as keys:
> 
> https://wiki.php.net/rfc/objkey
> 
> It was discussed in the past on the list:
> http://marc.info/?t=141145969600001&r=1&w=2
> and I think it makes sense to propose a formal RFC for it. Both the text
> and the code in the patch includes bits done by myself and Joe Watkins.
> The patch does not cover 100% of cases but should work for most
> reasonable scenarios, if something is wrong or you have ideas how to
> make it better please tell.
> 
> The name __hash is not final, I am open to using __toKey instead or any
> reasonable alternative, we may also include a couple of options in the
> vote if that will be a point of disagreement.
> 
> Thanks,
> Stas
> 

Morning Stas,
        
        Nicely done.
        
        Whether SPL classes, or any other classes, should use the functionality
should be left to another discussion.

        I wonder if it might be feasible to try and define what the contract of
this method is, in the same kind of way as the Java docs do for
Object.hashCode ? We can't have the exact same contract perhaps, but it
might be useful to try to define it at this stage.

        It seems __toScalar might be a good name, this is what the method
actually does, the engine then coerces to a type suitable for use as a
key, but you can return a double.

        It might be more forward thinking therefore to use the name __toScalar,
while today we'd only be using it for this, if we come up against the
requirement to treat an object as a scalar for anything else, we have
the machinery already and we don't have to add another magic method at
that time.

        Not sure what others think about that ... I liked the name __hash
better than __toKey, I like __toScalar better than those because it
describes what the method is meant to do the best.

Cheers
Joe


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

Reply via email to