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