php – 对象的真实和稳定的哈希
我需要清楚地识别一个对象并将其标识存储在我的数据库中.
之后我需要这个ID来恢复这个对象. 我尝试使用“spl_object_hash()”(http://php.net/manual/en/function.spl-object-hash.php),但每次重新加载页面时此函数都会返回另一个值. 对于测试,此对象是稳定的并且保持不变并且完全不变.从来没有“spl_object_hash()”一次又一次地返回不同的结果我重新加载. $foo = new stdClass(); print_r(spl_object_hash($foo)); – >每次点击刷新时都会有另一个哈希值 我需要一种方法来根据完整的对象创建一个哈希.只要对象没有,该哈希就不应该改变. 我不想为此实现自己的方法(只要没有其他可能解决我的问题),因为我需要一种快速,简单和统一的方法来识别我的对象. 此外,我不想为此目的使用Sessions. 那么我该怎么做才能解决这个问题呢? 非常感谢&友好的问候! 解决方法
您可以使用serialize调用(使用overriden __sleep()魔术调用)来序列化对象,以获得唯一的哈希:
$hash = md5(serialize($myObject)); 此外,在存储一些额外数据的对象(如PDO处理程序,文件句柄)中,您可以覆盖__sleep()和__wakeup()方法以获取/设置对象数据,例如来自http://www.php.net/manual/en/language.oop5.magic.php#object.sleep的代码 <?php class Connection { protected $link; private $dsn,$username,$password; public function __construct($dsn,$password) { $this->dsn = $dsn; $this->username = $username; $this->password = $password; $this->connect(); } private function connect() { $this->link = new PDO($this->dsn,$this->username,$this->password); } public function __sleep() { return array('dsn','username','password'); } public function __wakeup() { $this->connect(); } }?> 这应该为您提供良好的对象哈希,更好的是,您可以配置要用于创建哈希的字段. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |