On Sun, 4 Jun 2006, Andrei Zmievski wrote: > I am sorry if I missed the whole thread. I think that using the > result of __toString() for indexing objects is a bad idea. If we want > to allow this behavior (which is actually useful in some situations), > I'd rather we had a __hash() method or something similar to what > Python does. The string representation of the object and its hashed > representation may be very different.
After sitting on the fence on this one for a few days, I agree with Andrei. For example, for an eBay Item object, my __toString() returns the Title, but that's not unique, so my __toHash() returns the numeric ID, which is. Furthermore, if my __toString() was unique, and I was relying on that for keys in an array, I would have to mark that method as final; otherwise, someone might unknowingly destroy the uniqueness in a child class and break my code. That's not ideal because there could otherwise be many good reasons that someone would want to override __toString(). In contrast, it's unlikely that you would override __toHash(), and it's pretty obvious that you shouldn't do something that could cause collisions. The other proposal, where PHP generates a unique object id, would also be fine. Even better, perhaps. I'm not sure what I think yet. -adam -- [EMAIL PROTECTED] | http://www.trachtenberg.com author of o'reilly's "upgrading to php 5" and "php cookbook" avoid the holiday rush, buy your copies today! -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php