Edit report at http://bugs.php.net/bug.php?id=52528&edit=1
ID: 52528 Comment by: + at ni-po dot com Reported by: giorgio dot liscio at email dot it Summary: request for interface hashCode (Identifiable) Status: Open Type: Feature/Change Request Package: Class/Object related Operating System: irr PHP Version: Irrelevant Block user comment: N New Comment: I see no reason for this to be implemented. Generate an spl_object_hash, use (string) casting or implement your own ->toHash() method. This is something you will want to do only ***very*** rarely. Thus it shouldn't pollute the interface namespace. Previous Comments: ------------------------------------------------------------------------ [2010-08-03 23:20:42] jackohman at eugama dot com would be really nice having the possibility to use different output strings, one for readability, one for unique identify an object class ArrayObject implements Identifiable { function hashCode(){return spl_object_hash($this);} function __toString(){return json_encode($this);} } $obj = new ArrayObject(); $myarr[$obj] = (String)$obj; very nice, i'm voting it ------------------------------------------------------------------------ [2010-08-03 23:05:24] giorgio dot liscio at email dot it Description: ------------ i, i hope to see something like this in future php releases interface Identifiable { public function /*string*/ hashCode(); } class Test implements Identifiable { public function hashCode(){return spl_object_hash($this);} } method hashCode() should be called in these contexts: $myarr[new Test()] = "test"; $myarrobj->{new Test()} = "test"; and manually inside: function method(Identifiable $instance){}; the hash should be obtained by calling $obj->hashCode() if it is Identifiable or $obj->scalarValue() if it implements ScalarAccess $obj->__toString() if it has method __toString or, finally throw an error what do you think about this? thank you ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52528&edit=1