rfc:hashkey

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
rfc:hashkey [2014/10/22 12:21] – created 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 5: Line 5:
   * Status: Draft   * Status: Draft
   * First Published at: http://wiki.php.net/rfc/hashkey   * First Published at: http://wiki.php.net/rfc/hashkey
- 
-===== Introduction ===== 
-Often discussed is the problem that we cannot use objects as array keys. 
  
 ===== Proposal ===== ===== Proposal =====
-We introduce a new magic __hashKey method, expected to return ______+new magic toKey method, to resolve the problem of not being able to use Objects as array keys. 
 + 
 +<code php> 
 +<?php 
 +class Foo { 
 +    public function __toKey() { 
 +        return "Foo"; 
 +    } 
 +
 + 
 +$foo = new Foo(); 
 +$test = [ 
 +    $foo => true 
 +]; 
 +</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>
  
-Error conditions are _____+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