rfc:hashkey

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:hashkey [2014/10/22 13:48] krakjoerfc:hashkey [2014/10/22 17:57] krakjoe
Line 1: Line 1:
-====== PHP RFC: __hashKey magic method ======+====== PHP RFC: __toKey magic method ======
   * Version: 0.9   * Version: 0.9
   * Date: 2014-10-22   * Date: 2014-10-22
Line 7: Line 7:
  
 ===== Proposal ===== ===== Proposal =====
-A new magic __hashKey method, expected to return a scalar suitable for use as a HashTable key:+A new magic toKey method, to resolve the problem of not being able to use Objects as array keys.
  
 <code php> <code php>
 +<?php
 class Foo { class Foo {
-    public function __hashKey() { +    public function __toKey() { 
-        return __CLASS__;+        return "Foo";
     }     }
 } }
Line 22: Line 23:
 </code> </code>
  
 +Inheritance shall work as any other magic method:
 +
 +<code php>
 +<?php
 +class Foo {
 +    public function __toKey() {
 +        return "Foo";
 +    }
 +}
 +
 +class Bar extends Foo {
 +    /* shall use Foo::__toKey unless Bar::__toKey is implemented */
 +}
 +
 +$bar = new Bar();
 +$test = [
 +    $bar => true
 +];
 +</code>
 +
 +Returning a non-scalar shall fail as it did before:
 +
 +<code php>
 +<?php
 +class Foo {
 +    public function __toKey() {
 +        return [];
 +    }
 +}
 +
 +$foo = new Foo();
 +$test = [
 +    $foo => true
 +];
 +</code>
 +
 +Shall yield:
 +
 +<code php>
 +Warning: Illegal offset type in %s on line %d
 +</code>
 +
 +The current behaviour of __toString is unchanged.
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
rfc/hashkey.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1