On Mon, 2014-10-27 at 09:35 +0100, Michael Wallner wrote:
> Actually, I see spl_object_hash($this) the 90% implementation of
> __hash(), so how about making it the default for any object?

I agree - it might be a good default.

To Will's question: It is not sufficient for all cases. Having a custom
implementation allows the reverse.

 $u = new ustring(".....");
 $a[$u] = 42;
 unset($u);
 foreach ($a as $k => $v) {
   $u = u($k); // u() is a bad name, see other thread for that debate
 }

also spl_object_hash is a unique identify, but given value objects
having them in array_keys might mean that one doesn't want identity but
grouped by value ...

  function get_date_for_item($item) {
      return new DateTime(...);
  }

  foreach ($items as $item) {
    $counts[get_date_for_item($item)]++;
  }

here we create a new Datetime instance for each item, while multiple
items might share the same data. in the loop we're counting distinct
dates not DateTime instances.

johannes



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

Reply via email to